远程引用是对远程仓库的引用(指针),包括分支、标签等等
你可以通过 git ls-remote <remote>
来显式地获得远程引用的完整列表
polo@B-J5D1MD6R-2312 watermarker % git ls-remote From git@gitee.com:poloyy/watermarker.git 3fb14343217ff0725bbf68f9a1b5f36fa650548f HEAD 3fb14343217ff0725bbf68f9a1b5f36fa650548f refs/heads/master 7fa175dbc2a1ce3cec03033472abb894f1a94527 refs/tags/testbu 8be5ab723bc931dcae3cd9a2bccaca8b474e962b refs/tags/v1.1 9baca61910f4182075c753a4bb9eedba5af8cb02 refs/tags/v1.1
或者通过 git remote show <remote>
获得远程分支的更多信息
polo@B-J5D1MD6R-2312 watermarker % git remote show origin * 远程 origin 获取地址:git@gitee.com:poloyy/watermarker.git 推送地址:git@gitee.com:poloyy/watermarker.git HEAD 分支:master 远程分支: master 已跟踪 为 ‘git pull‘ 配置的本地分支: master 与远程 master 合并 为 ‘git push‘ 配置的本地引用: master 推送至 master (最新)
<remote>/<branch>
查看最后一次与远程仓库 origin
通信时 master
分支的状态
origin/master
你与同事合作解决一个问题并且他们推送了一个 iss53
分支,你可能有自己的本地 iss53
分支, 然而在服务器上的分支会以 origin/iss53
来表示
master
分支的指针,并且在本地将其命名为 origin/master【远程分支 origin/master】
master
分支在指向同一个地方的本地 master
分支,这样你就有工作的基础【本地分支 master】
假设指定远程仓库名字
git clone -o booyah
那么默认的远程分支名字就是 booyah/master
git.ourcompany.com
的 master 分支上 push 了新的提交
将本地的远程仓库和服务器上的远程仓库同步数据
git fetch <remote>
git fetch origin
git.ourcompany.com
)origin/master
指针到更新之后的位置可以看到,因为本地的 master 分支已经有过新的提交,所以和 origin/master 远程分支处于分叉状态
git fetch
更新你的远程跟踪分支现在有个新的 git 服务器位于 git.team1.ourcompany.com
当有多个远程仓库与远程分支的情况下,要怎么添加新的远程仓库引用到本地项目呢?
git remote add <remote> <git 服务器 url
抓取新添加的远程仓库在本地没有的数据
git fetch teamone
origin
服务器上的一个子集,teamone/master
指向 teamone
的 master
分支。teamone/master
推送本地指定分支的内容到指定的远程仓库下
git push <remote> <branch>:
将本地的 serverfix
分支推送到远程仓库上的 awesomebranch
分支
git push origin serverfix:awesomebranch
下一次其他协作者从服务器上拉取数据时,他们会在本地生成一个远程分支 origin/serverfix
,指向服务器的 serverfix
分支的引用:
$ git fetch origin remote: Counting objects: 7, done. remote: Compressing objects: 100% (2/2), done. remote: Total 3 (delta 0), reused 3 (delta 0) Unpacking objects: 100% (3/3), done. From https://github.com/schacon/simplegit * [new branch] serverfix -> origin/serverfix
这样操作,本地不会自动新增一个 serverfix 分支,只是有一个不可修改的 origin/serverfix 指针
git merge origin/serverfix
这也是将 origin/serverfix 远程分支下的内容合并到本地当前所在分支
$ git checkout -b serverfix origin/serverfix Branch serverfix set up to track remote branch serverfix from origin. Switched to a new branch ‘serverfix‘
这样可以在本地新建一个 serverfix 分支,并且和 origin/serverfix 远程分支指向同一个提交内容
git pull
,Git 能自动地识别去哪个服务器上抓取、合并到哪个分支
-u
或 --set-upstream-to
将本地分支跟踪一个刚拉取下来的远程分支,或者修改正在跟踪的上游分支
$ git branch -u origin/serverfix
Branch serverfix set up to track remote branch serverfix from origin.
$ git branch -vv iss53 7e424c3 [origin/iss53: ahead 2] forgot the brackets master 1ae2a45 [origin/master] deploying index fix * serverfix f8674d9 [teamone/server-fix-good: ahead 3, behind 1] this should do it testing 5ea463a trying something new
iss53
分支正在跟踪 origin/iss53
并且 “ahead” 是 2,本地有两个提交还没有推送到服务器上【领先两个提交】master
分支正在跟踪 origin/master
分支并且是最新的【 [] 里面没有其他提示】serverfix
分支正在跟踪 teamone
服务器上的 server-fix-good
分支并且领先 3 落后 1,服务器上有一次提交还没有合并入同时本地有三次提交还没有 pushtesting
分支并没有跟踪任何远程分支【没有 [] 】
git fetch --all
git branch -vv
git fetch
命令从服务器上抓取本地没有的数据时,它并不会修改工作目录中的内容,它只会获取数据然后让你自己合并
git fetch
git merge
当某个远程分支已经做完所有工作,且把该分支的内容合并到了 master 分支(或其他稳定版本分支),就要删除不再需要的远程分支
$ git push origin --delete serverfix To https://github.com/schacon/simplegit - [deleted] serverfix
原文:https://www.cnblogs.com/poloyy/p/14802417.html