首页 关于 微信公众号
欢迎关注我的微信公众号

Git的高级用法

git命令

从远端获取

git remote -v  // 查看远程仓库

// 获取但不合并
git fetch <远程版本库>
// 如:
git fetch origin  // origin是远程仓库的默认名
git fetch https://github.com/heheda/232.git

// 获取并合并到当前分支
git pull   // 等价于 git pull origin
git pull https://github.com/heheda/232.git master  // 当不是从默认远程库获取时,需要指定获取哪个分支,这里就是指定获取master分支

git pull <remoteName> <localBranchName> // 拉取远程仓库到本地分支
git pull origin test  // 拉取远程库到本地test分支

从远程同步代码,一般用这种方式:

git fetch origin master:temp   // 从远程库origin的master分支获取版本库到本地temp分支
git diff temp  // 比较本地tmp分支和当前所在分支(一般为本地master分支)
git merge temp // 合并本地temp分支到当前分支(一般为本地master分支)

不常用的git命令

下面介绍的是工作中不常用的git命令

标签

git tag 1.0 // 为当前分支最后一次提交创建标签,标签名无法修改
git tag dev_v1.1.1 master  // 为master分支最近一次提交创建标签
git tag dev_v1.1.0 4e6584278  // 为某次历史提交创建标签

git tag  // 显示标签列表

git checkout dev_v1.1.1  // 检出标签

git branch dev2 dev_v1.1.1 // 由dev_v1.1.1创建分支dev2
git checkout -b dev3 dev_v1.1.0  // 由dev_v1.1.0创建分支dev3

git tag -d 1.0   // 删除标签

查看状态

git branch -v  // 查看每个分支最后的提交

导出版本库

git archive --format=zip HEAD>nb.zip
git archive --format=zip --prefix=nb1.0/ HEAD>nb.zip

工作中会遇到的场景

总结一下工作中经常遇到的场景

修改最近一次提交的信息

git commit --amend -m "new commit message" // 提交了,发现提交信息写错了,修改上次提交的信息可以用这条命令
git commit -C HEAD -a --amend //不会产生新的提交历史记录,复用HEAD留言,增补提交,而不增加提交记录

撤销提交之后重做

// 我提交了一些内容
$ git commit -m "commit 17"
// 接着我撤销了这些更改
$ git reset HEAD^ --hard
// 额,我这时发现我得还原这些更改
// Step 1: 用 git reflog 查看
$ git reflog
2750087 HEAD@{0}: reset: moving to HEAD^
ad14ba3 HEAD@{1}: commit: commit 17
...
// 发现了刚才的那次撤销以及前面那次提交的信息
// Step 2: 用 git reset 回到那次提交
$ git reset ad14ba3
HEAD is now at ad14ba3 commit 17
// 打印出来的信息显示,我们做到了,更改被还原过来了
// 再看看 reflog 信息和 log 信息
$ git reflog
ad14ba3 HEAD@{0}: reset: moving to ad14ba3
2750087 HEAD@{1}: reset: moving to HEAD^
ad14ba3 HEAD@{2}: commit: commit 17
...
$ git log
commit ad14ba39c57b4b43b913ebc273500afa815bb0e3
Author: sc <sc@sc-MacBookPro.local>
Date:   Tue Jul 14 22:55:24 2015 +0800
    commit 17

储藏当前工作

停止跟踪一个已经被跟踪的文件

Blog

Opinion

Project