git常用命令参考

本文是Git常用命令的参考手册。


git常用命令

以下是一些常用的 Git 命令,按照用途分类整理:

配置设置

1
2
3
4
5
6
7
git config --list --show-origin	# 查看所有的配置以及它们所在的文件
git config --global user.name "xxx" # 设置全局用户名,信息记录在~/.gitconfig文件中
git config --global user.email xxx@xxx.com # 设置全局邮箱地址,信息记录在~/.gitconfig文件中
git config --global alias.co checkout # 给命令起别名
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.last 'log -1 HEAD' # 看到最后一次提交

基础操作

1
2
3
4
5
6
git init	# 初始化仓库,初始化仓库将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中
git clone <repository-url> # 克隆远程仓库,将远程仓库下载到当前目录下
# 三种等价方法获取帮助
git help <verb>
git <verb> --help
man git-<verb>

版本控制

1
2
3
4
5
6
7
git status # 查看当前状态
git add <file> # 添加单个文件到暂存区
git add . # 添加所有改动的文件到暂存区
git commit -m "提交信息" # 提交到本地仓库,将暂存区的内容提交到当前分支
git log # 查看当前分支的提交历史
git log --oneline # 简洁格式
git reflog # 查看HEAD指针的移动历史(包括被回滚的版本)

分支管理

1
2
3
4
5
6
7
8
9
10
git branch	# 查看所有分支和当前所处分支
git branch <branch-name> # 创建新分支
git checkout <branch-name> # 切换分支
git checkout -b <branch-name> # 创建并切换到新分支
git checkout -t origin/branch_name # 将远程的branch_name分支拉取到本地
git merge <branch-name> # 将分支branch-name合并到当前分支上
git branch -d <branch-name> # 删除已合并分支
git branch -D <branch-name> # 强制删除分支
git branch --merged # 查看已经合并到当前分支的分支
git branch --no-merged # 查看尚未合并到当前分支的分支

远程操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
git remote -v	# 查看远程仓库
git clone <repository-url> # 克隆远程仓库,将远程仓库下载到当前目录下
git remote add origin <repository-url> # 将本地仓库关联到远程仓库

git push -u (第一次需要-u以后不需要) # 将当前分支推送到远程仓库
git push origin <branch-name> # :将本地的branch-name分支推送到远程仓库
git push origin serverfix:awesomebranch # 将本地的serverfix分支推送到远程仓库上的 awesomebranch分支
git push -d origin branch_name # 删除远程仓库的branch_name分支

git fetch <remote> # 将数据下载到你的本地仓库——它并不会自动合并或修改你当前的工作
git pull # 将远程仓库的当前分支与本地仓库的当前分支合并
git pull origin branch_name # 将远程仓库的branch_name分支与本地仓库的当前分支合并

git remote remove # 移除一个远程仓库

标签管理

1
2
3
4
5
6
7
git tag	# 查看标签
git tag -a v1.4 -m "my version 1.4" # 创建标签
git tag -d <tagname> # 删除标签
git push origin <tagname> # 推送特定标签版本到远端服务器
git push origin --tags # 一次性推送很多标签
git push origin --delete <tagname> # 删除远端标签
git push <remote> :refs/tags/<tagname> # 删除远端标签 冒号前有空格

恢复与撤销

1
2
3
4
5
6
7
8
git rm <file>	# 从已跟踪文件清单中移除,连带从工作目录中删除指定的文件,这样以后就不会出现在未跟踪文件清单中了
git rm --cached <file> # 把文件从 Git 仓库中删除(亦即从暂存区域移除),但仍然希望保留在当前工作目录中
git checkout -- <file> 或 git restore XX # 撤销工作区修改
git reset HEAD <file> # 撤销暂存区的文件
git reset --hard <commit-id> # 回退到某次提交
git reset --hard HEAD^ 或 git reset --hard HEAD~ # 将代码库回滚到上一个版本
git reset --hard HEAD^^ # 往上回滚两次,以此类推
git reset --hard HEAD~100 # 往上回滚100个版本

高级操作

1
2
3
4
5
6
7
8
9
10
11
12
13
git diff xx # 命令比较的是工作目录中当前文件和暂存区域快照之间的差异(若没有暂存区则与最后一次commit的版本比较)
git diff --staged # 比对已暂存文件与最后一次提交的文件差异
git difftool --tool-help # 查看系统支持哪些 Git Diff 插件

git push --set-upstream origin <branch-name> # 创建并切换到分支后推送
git push --set-upstream origin branch_name # 设置本地的branch_name分支对应远程仓库的branch_name分支
git branch --set-upstream-to=origin/branch_name1 branch_name2 # 将远程的branch_name1分支与本地的branch_name2分支对应

git stash # 将工作区和暂存区中尚未提交的修改存入栈中
git stash apply # 将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
git stash drop # 删除栈顶存储的修改
git stash pop # 将栈顶存储的修改恢复到当前分支,同时删除栈顶元素
git stash list # 查看栈中所有元素