Git 命令汇总

《Pro Git》笔记

基础

初次运行Git前的配置

设置用户名和邮箱地址

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

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

1
git init

克隆现有仓库

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

检查当前仓库状态

1
git status

格式更为紧凑的输出:

1
2
git status -s
git status --short

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

1
git add filename

提交更新

1
git commit -m "some text"

跳过使用暂存区

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

1
git commit -a -m "some text"

移除文件

1
git rm filename

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

1
git rm -f filename

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

1
git rm --cached filename

重命名文件

1
git mv oldname newname

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

1
2
3
mv oldname newname
git rm oldname
git add newname

查看提交历史

1
git log

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

1
2
git log -p
git log --patch

只显示最近两次提交:

1
git log -p -2

显示简略统计信息:

1
git log --stat

每个提交放在一行显示:

1
git log --pretty=online

改善最后一次提交

1
git commit --amend

取消暂存的文件

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

1
git reset HEAD filename

撤销对文件的修改

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

1
git checkout -- filename

远程仓库

查看远程仓库

1
git remote -v

添加远程仓库

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

从远程仓库中拉取

1
git fetch <remote>

拉取所有远程仓库:

1
git fetch --all

推送到远程仓库

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

1
git push origin serverfix

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

1
git push origin serverfix:awesomebranch

查看某个远程仓库

1
git remote show origin

重命名远程仓库

1
git remote rename pb paul

移除远程仓库

1
git remote remove paul

标签

列出标签

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

创建标签

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

附注标签:

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

轻量标签:

1
git tag v1.4-lw

为过去的提交打标签:

1
git tag -a v1.2 9fceb02

推送标签

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

1
git push origin --tags

删除本地标签

1
git tag -d v1.4-lw

删除远程标签

1
git push origin :refs/tags/<tagname>

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

或采用以下命令:

1
git push origin --delete <tagname>

检出(checkout)标签

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

1
git checkout -b version2 v2.0.0

分支

创建分支

1
git branch testing

切换分支

1
git checkout testing

创建分支并切换

1
git checkout -b iss53

等价于一下两个命令:

1
2
git branch iss53
git checkout iss53

合并分支

将hotfix分支合并到master分支:

1
2
git checkout master
git merge hotfix

查看分支

查看所有分支:

1
git branch

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

1
git branch --merged

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

1
git branch --no-merged

跟踪分支

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

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

1
git checkout -b serverfix origin/serverfix

等价于:

1
git checkout --track origin/serverfix

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

1
git branch -u origin/serverfix

-u 等价于 –set-upstream-to

查看所有跟踪分支:

1
git branch -vv

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

删除远程分支

从服务器上删除serverfix分支:

1
git push origin --delete serverfix