Git 命令汇总

《Pro Git》笔记

基础

初次运行Git前的配置

设置用户名和邮箱地址

git config --global user.name "John Doe"
git config --global user.email johndoe@example.com

在已存在的目录中初始化仓库

git init

克隆现有仓库

git clone https://github.com/libgit2/libgit2
git clone https://github.com/libgit2/libgit2 mylibgit

检查当前仓库状态

git status

格式更为紧凑的输出:

git status -s
git status --short

跟踪新文件/暂存已修改的文件/合并时将有冲突的文件标记为已解决状态

git add filename

提交更新

git commit -m "some text"

跳过使用暂存区

把所有已经跟踪的文件暂存起来一并提交:

git commit -a -m "some text"

移除文件

git rm filename

如果要删除的文件已经修改过或放到暂存区:

git rm -f filename

如果想从Git仓库中删除,但希望在工作目录中保留文件:

git rm --cached filename

重命名文件

git mv oldname newname

相当于执行了以下三个命令:

mv oldname newname
git rm oldname
git add newname

查看提交历史

git log

显示每次提交引入的差异:

git log -p
git log --patch

只显示最近两次提交:

git log -p -2

显示简略统计信息:

git log --stat

每个提交放在一行显示:

git log --pretty=online

改善最后一次提交

git commit --amend

取消暂存的文件

使文件由已暂存变为未暂存(已修改)

git reset HEAD filename

撤销对文件的修改

使用仓库中最后一次提交的版本覆盖文件

git checkout -- filename

远程仓库

查看远程仓库

git remote -v

添加远程仓库

git remote add pb https://github.com/paulboone/ticgit

从远程仓库中拉取

git fetch <remote>

拉取所有远程仓库:

git fetch --all

推送到远程仓库

将本地的serverfix分支推送到origin远程仓库的serverfix分支:

git push origin serverfix

将本地的serverfix分支推送到origin远程仓库的awesomebranch分支:

git push origin serverfix:awesomebranch

查看某个远程仓库

git remote show origin

重命名远程仓库

git remote rename pb paul

移除远程仓库

git remote remove paul

标签

列出标签

git tag
git tag -l "v1.8.5*"

创建标签

轻量标签:只是某个特定提交的引用。
附注标签:是存储在Git数据库中的一个完整对象。

附注标签:

git tag -a v1.4 -m "my version 1.4"

轻量标签:

git tag v1.4-lw

为过去的提交打标签:

git tag -a v1.2 9fceb02

推送标签

默认情况下git push并不会传送标签到远程仓库服务器上,必须显式推送:

git push origin --tags

删除本地标签

git tag -d v1.4-lw

删除远程标签

git push origin :refs/tags/<tagname>

上面这种操作的含义是,将冒号前面的空值推送到远程标签名,从而高效地删除它。

或采用以下命令:

git push origin --delete <tagname>

检出(checkout)标签

检出标签的同时创建分支version2,否则新的提交将不属于任何分支,并且将无法访问,除非通过确切的提交哈希值才能访问。

git checkout -b version2 v2.0.0

分支

创建分支

git branch testing

切换分支

git checkout testing

创建分支并切换

git checkout -b iss53

等价于一下两个命令:

git branch iss53
git checkout iss53

合并分支

将hotfix分支合并到master分支:

git checkout master
git merge hotfix

查看分支

查看所有分支:

git branch

查看已合并到当前分支的分支:

git branch --merged

查看未合并到当前分支的分支:

git branch --no-merged

跟踪分支

如果git pull不带参数,将首先fetch当前分支关联的远程分支(跟踪分支),然后将远程分支合并到当前分支。

检出分支时将自动设置关联分支:

git checkout -b serverfix origin/serverfix

等价于:

git checkout --track origin/serverfix

设置当前分支的跟踪分支:

git branch -u origin/serverfix

-u 等价于 --set-upstream-to

查看所有跟踪分支:

git branch -vv

git pull 等价于 git fetch + git merge,拉取远程分支并合并到当前分支。

删除远程分支

从服务器上删除serverfix分支:

git push origin --delete serverfix