Git 是一款流行的代码版本管理工具,本页提供了常用 Git 命令的速查功能,以及相关的术语参考,是程序开发人员必备的参考工具。
创建命令 Create
Git 命令 | 命令说明 |
git clone |
克隆远程仓库 |
git init |
初始化本地 git 仓库(即创建新的本地仓库) |
本地更改 Local Changes
Git 命令 | 命令说明 |
git status |
查看当前分支状态 |
git diff |
查看已跟踪文件的变更 |
git add |
将指定的文件添加到暂存区 |
git add . |
将所有有变更的文件添加到暂存区 |
git commit -a |
提交所有本地修改 |
git commit -m "xxx" |
把已添加至暂存区的文件执行提交,并以 xxx 作为本次提交的描述 |
git commit --amend -m "xxx" |
修改上一次提交(请勿用该命令修改已发布的提交) |
git commit -am "xxx" |
该命令是 git add . 和 git commit -m "xxx" 的快捷方式 |
git stash |
暂存当前修改,将所有置为 HEAD 状态 |
git stash list |
查看所有暂存列表 |
git stash push |
把当前工作区的文件暂存到临时空间 |
git stash pop |
把文件从临时空间中恢复到当前工作区 |
提交历史 Commit History
Git 命令 | 命令说明 |
git log |
查看提交日志 |
git log -n |
显示 n 行日志,n 为整数 |
git log --stat |
查看本地提交日志 |
git show |
查看提交日志及相关变动文件 |
git show HEAD |
查看 HEAD 提交日志 |
git show HEAD^ |
查看 HEAD 的上一个版本提交日志。另外,git show HEAD^^ 是查看上 2 个版本 的提交日志;git show HEAD^5 是查看上 5 个版本的提交日志 |
git blame |
对于指定文件,逐行显示提交的哈希ID、提交者、提交日期以及修改的内容 |
git whatchanged |
显示提交历史,以及每次提交变更的文件 |
分支和标签 Branches & Tags
Git 命令 | 命令说明 |
git branch |
查看本地分支 |
git branch -r |
查看远程分支 |
git branch -a |
查看所有分支(本地和远程) |
git branch --merged |
查看所有分支已合并到当前分支的分支 |
git branch --no-merged |
查看所有分支未合并到当前分支的分支 |
git branch -m |
把当前分支的名称改成 new-branch;如果 new-branch 已存在,将不会执行改名 |
git branch -M |
强制把当前分支的名称改成 new-branch(即使 new-branch 已存在) |
git branch -m |
把分支 old-branch 的名称改成 new-branch,如果 new-branch 已存在,将不会 执行改名 |
git branch -M |
强制把分支 old-branch 的名称改成 new-branch(即使 new-branch 已存在) |
git checkout |
切换到 branch-name 分支 |
git branch |
新建分支(也可以用 git checkout -b ) |
git branch --track |
基于远程分支创建一个新分支,同 git checkout --track |
git branch -d |
删除本地分支 |
git tag |
列出所有本地标签 |
git tag |
基于最新的提交创建标签 |
git tag -d |
删除标签 |
删除命令 Remove
Git 命令 | 命令说明 |
git rm |
删除文件(将从磁盘中删除文件) |
git rm -r |
递归删除指定目录下的文件 |
git rm --cached |
停止跟踪文件,不会从磁盘中删除 |
合并和衍合 Merge & Rebase
Git 命令 | 命令说明 |
git merge |
合并指定分支到当前分支,保留两个 |
git rebase |
合并指定分支到当前分支,只保留一个 |
git rebase --abort |
终止 rebase 操作,即回到执行 rebase 之前的状态 |
git rebase --continue |
解决冲突后继续执行 rebase |
git mergetool |
使用配置文件指定的 mergetool 解决冲突 |
git add git rm |
使用编辑器手动解决文件冲突,并在冲突解决后,把文件标记为 resolved |
撤销命令 Undo
Git 命令 | 命令说明 |
git reset --hard HEAD |
将当前版本重置为 HEAD(用于 merge 失败的时候) |
git reset |
将当前版本重置为某一个提交状态,代码不变 |
git reset --hard |
强制将当前版本重置为某一个提交状态,并丢弃那个状态之后的所有修改(请谨慎使用该命令) |
git reset --merge |
将当前版本重置为某一个提交状态,并保留版本库中不同的文件 |
git reset --keep |
将当前版本重置为某一个提交状态,并保留未提交的本地修改 |
git revert |
撤销提交 |
git restore |
丢弃指定文件的修改信息,即恢复到文件修改前的状态 |
git checkout -- |
同 git restore 命令 |
git checkout HEAD |
对于指定文件,丢弃该文件的本地修改信息 |
git clean |
清除工作目录中未跟踪的文件 |
git clean -n |
列出哪些文件将从工作目录中删除 |
配置命令 Git Configuration
Git 命令 | 命令说明 |
git config --list |
列出当前 Git 配置 |
git config --global user.name |
把参数 name 设置为当前用户使用的提交者的姓名;如果未指定 name 参数,则显示当前用户使用的提交者姓名 |
git config --global user.email |
把参数 email 设置为当前用户使用的提交者的邮箱;如果未指定 email 参数,则显示当前用户使用的提交者邮箱 |
git config --global alias. |
为 Git 命令创建全局的别名。比如,执行 alias.glog log --graph --oneline --decorate 命令后,git glog 就相当于 git log --graph --oneline --decorate。 |
git config --system core.editor |
对于本机的所有用户,设置命令使用的编辑器(比如 vim) |
git config --global --edit |
在编辑器中打开全局配置文件(用于手动修改) |
git config --global color.ui auto |
使用不同的颜色渲染 Git 命令的输出结果 |
其他命令 Other
Git 命令 | 命令说明 |
git var -l |
列出 Git 环境变量 |
git help |
显示指定命令的帮助(将呼出该命令的 man 文件) |