Git 速查表
Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 基础
git init <directory>
在指定目录中创建空的git仓库。在没有参数的情况下运行,则将当前目录初始化为git仓库。
git clone <repo>
将位于<repo>的仓库克隆到本地机器上。原始的仓库可以位于本地文件系统上,也可以通过HTTP或SSH位于远程机器上。
git config user.name <name>
定义作者名用于当前仓库中的所有提交。
git add <directory>
为下一次提交,添加在<directory>变更的内容。
git commit -m "<message>"
提交阶段快照,使用<message>作为提交消息。
git status
列出哪些文件处于暂存、未暂存和未跟踪状态。
git log
使用默认格式显示整个提交历史记录。
git diff
对比工作目录(未 git add)和暂存区(git add 之后)的差异。
取消修改
git revert <commit>
创建新的提交,取消<commit>中所做的所有更改,然后将其应用于当前分支。
git reset <file>
从暂存区删除<file>,但保持工作目录不变。这将在不覆盖任何更改文件的情况下取消文件。
git clean -n
显示将从工作目录中删除哪些文件。使用-f标志代替-n标志来执行清理。
Git 重写历史
git commit --amend
修改最新的一次git commit提交事件 , 并且工作目录有可提交的变更时, 使用git commit --amend命令修改后, 工作目录的最新变更也将一起被提交了
git rebase <base>
将当前分支重设为<base>。<base>可以是提交ID、分支名称、标签或HEAD。
git reflog
可以查看所有分支的所有操作记录(包括已经被删除的 commit 记录和 reset 的操作)。
Git 分支
git branch
列出所有的分支。添加一个<branch>参数来创建一个名为<branch>的新分支。
git checkout -b <branch>
创建并检出一个名为<branch>的新分支。去掉 -b 以签出现有的分支。
git merge <branch>
将<branch>分支合并到当前分支中。
远端仓库
git remote add <name> <url>
添加一个新的远程仓库。添加远程之后,可以在其他命令中使用<name>作为<url>的快捷方式。
git fetch <remote> <branch>
从repo获取指定<分支>的全部更新内容,但不会与本地分支合并。
git pull <remote>
获取当前分支的指定远程副本,并立即将其合并到本地副本中。
git push <remote> <branch>
将分支推到<remote>,以及必要的提交和对象。如果远程repo不存在,则在远程repo中创建命名分支。
git config
git config --global user.name <name>
定义作者名,以供当前用户的所有提交使用。
git config --global user.email <email>
定义作者电子邮件用于当前用户的所有提交。
git config --global alias. <alias-name> <git-command>
为Git命令创建一个快捷方式(别名)。
git config --system core.editor <editor>
为计算机上的所有用户设置命令使用的文本编辑器。
git config --global --edit
在文本编辑器中打开全局配置文件以进行手动编辑。
git log
git log -<limit>
显示 <limit>条提交历史记录。
git log --oneline
显示提交历史记录,并将每个提交压缩到一行。
git log -p
显示提交历史记录,并显示每个提交的完整差异。
git log --stat
显示提交历史记录,包括哪些文件被修改,以及从每个文件中添加或删除的相对行数。
git log --author= ”<pattern>”
搜索指定作者的提交。
git log --grep=”<pattern>”
使用正则匹配搜索提交历史记录。
git log <since>..<until>
显示发生在<since>和<until>之间的提交。
git log -- <file>
仅显示包含指定文件的提交记录。
git diff
git diff HEAD
对比工作目录(未 git add)和版本库(git commit 之后)的文件差异。
git diff --cached
对比暂存区(git add 之后)和版本库(git commit 之后)的文件差异。
git reset
git reset
重置暂存区以匹配最近的提交,但保持工作目录不变。
git reset --hard
重置暂存区和工作目录为最近的提交,并覆盖工作目录中的所有更改。
git reset <commit>
将当前分支提示向后移动到<commit>,将暂存区重置,但不改变工作目录。
git reset --hard <commit>
与前面相同,但将暂存区和工作目录重置。删除未提交的更改,以及<commit>之后的所有提交。
git pull
git pull --rebase <remote>
获取当前分支的远程副本并将其重置为本地副本。使用git rebase而不是merge来集成分支。
git push
git push <remote> --force
强制推送。
git push <remote> --all
将所有本地分支推到指定的远程。
git push <remote> --tags
将所有本地标签推送到远程仓库。