查看所有远程引用:
$ git ls-remote
From ssh://someone@example/testgit
ebf3ef7551603cd57a699e80db0bfab36d1aa7b0 HEAD
ebf3ef7551603cd57a699e80db0bfab36d1aa7b0 refs/heads/master
9d4073a1052c6d62d28b6802461b0f401731ccef refs/tags/v1_tag
ca71d3b05cf56743b291d412e31001ec17d5e529 refs/tags/v1_tag^{}
跟踪远程分支:
克隆一个仓库时,它通常会自动地创建一个跟踪 origin/master
的 master
分支。
创建本地分支跟踪远程分支:git checkout -b [branch] [remotename]/[branch]
$ git checkout -b sf origin/serverfix
Branch sf set up to track remote branch serverfix from origin.
Switched to a new branch 'sf'
或者使用--track,这时本地分支名字和远程分支的名字一样。
$ git checkout --track origin/serverfix
Branch serverfix set up to track remote branch serverfix from origin.
Switched to a new branch 'serverfix'
具有跟踪关系的本地分支和远程分支可以自动pull、push和fetch。
设置已有的本地分支跟踪一个刚刚拉取下来的远程分支,或者想要修改正在跟踪的上游分支,你可以在任意时间使用 -u
或 --set-upstream-to
选项运行 git branch
来显式地设置。
$ git branch -u origin/serverfix
Branch serverfix set up to track remote branch serverfix from origin.
上游快捷方式:
当设置好跟踪分支后,可以通过 @{upstream}
或 @{u}
快捷方式来引用它。 所以在master
分支时并且它正在跟踪 origin/master
时,如果愿意的话可以使用 git merge @{u}
来取代 git merge origin/master
。
如果想要查看设置的所有跟踪分支,可以使用 git branch
的 -vv
选项
$ git branch -vv
iss53 7e424c3 [origin/iss53: ahead ] forgot the brackets
master 1ae2a45 [origin/master] deploying index fix
* serverfix f8674d9 [teamone/server-fix-good: ahead , behind ] this should do it
testing 5ea463a trying something new
可以看到 serverfix
分支正在跟踪 teamone
服务器上的 server-fix-good
分支并且领先 2 落后 1,意味着服务器上有一次提交还没有合并入同时本地有三次提交还没有推送。 最后看到 testing
分支并没有跟踪任何远程分支。
需要重点注意的一点是这些数字的值来自于你从每个服务器上最后一次抓取的数据。 这个命令并没有连接服务器,它只会告诉你关于本地缓存的服务器数据。 如果想要统计最新的领先与落后数字,需要在运行此命令前抓取所有的远程仓库。 可以像这样做:$ git fetch --all; git branch -vv
删除远程分支:
$ git push origin --delete serverfix
To https://github.com/schacon/simplegit
- [deleted] serverfix