常用Git命令小抄

总结一些常用的Git命令。

配置

# 列出所有配置信息
$ git config --list
# 编辑配置文件
$ git config -e
# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"

分支管理

# 列出所有本地分支
$ git branch
# 列出所有远程分支
$ git branch -r
# 列出所有本地分支和远程分支
$ git branch -a
# 列出本地分支关联的远程分支
$ git branch -vv
# 新建一个分支,但依然停留在当前分支
$ git branch [branch-name]
# 新建一个分支,并切换到该分支
$ git checkout -b [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
## 关联远程分支
$ git --set-upstream-to=origin/branch
# 取消关联远程分支
$ git unset

撤销管理

# 恢复暂存区的指定文件到工作区
$ git checkout [file]
# 恢复某个commit的指定文件到暂存区和工作区
$ git checkout [commit] [file]
# 恢复暂存区的所有文件到工作区
$ git checkout .
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
$ git reset [file]
# 重置暂存区与工作区,与上一次commit保持一致
$ git reset --hard [file]
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
$ git reset [commit]
# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
$ git reset --hard [commit]

Diff

# 显示暂存区和工作区的差异
$ git diff
# 显示暂存区和上一个commit的差异
$ git diff --cached [file]
# 显示工作区与当前分支最新commit之间的差异
$ git diff HEAD
# 比较多个commit之间的差异
$ git diff commit1 commit2
$ git diff commit1 commit2:filename

fetch/pull/push

# 下载远程仓库的所有变动
$ git fetch [remote]
# 取回远程仓库的变化,并与本地分支合并
$ git pull [remote] [branch]
# 上传本地指定分支到远程仓库
$ git push [remote] [branch]
# 强行推送当前分支到远程仓库,即使有冲突
$ git push [remote] --force
# 推送所有分支到远程仓库
$ git push [remote] --all

标签管理

# 列出所有tag
$ git tag
# 新建一个tag在当前commit
$ git tag [tagName]
# 新建一个tag在指定commit
$ git tag [tagName] [commit]
# 创建带有说明的标签,用-a指定标签名,-m指定说明文字
$ git tag -a [tagName] -m [description] [commit]
# 查看tag信息
$ git show [tagName]
# 删除本地tag
$ git tag -d [tagName]
# 提交指定tag
$ git push [remote] [tagName]
# 提交所有tag
$ git push [remote] --tags
# 删除远程tag
$ git push origin :refs/tags/[tagName]
# 新建一个分支,指向某个tag
$ git checkout -b [branch] [tagName]

bug分支

# 保存当前没有commit的环境
$ git stash
# 上面的stash不会保存没有add的文件
$ git stash -u
# 恢复的同时把stash内容也删了
$ git stash pop
$ git stash list
$ git stash apply stash@{0}
$ git stash drop stash@{0}

其他

# 显示分支详情
$ git remote show origin
# 删除远程分支中已经不存在的分支
$ git remote prune origin
# 增加一个新的远程仓库,并命名
$ git remote add [shortname] [url]
# 显示某次提交发生变化的文件
$ git show --name-only [commit]
# 查看某个commit的详情
$ git show [commit]
# 显示某次提交时,某个文件的内容
$ git show [commit]:[filename]

Contact

GitHub: https://github.com/ziwenxie
Blog: https://www.ziwenxie.site