直到最近,我还没有意识到--track切换git branch.我阅读了文档并尝试了这个命令,但对我来说没有任何意义.
--track创建新分支时,设置
branch.<name>.remote和branch.<name>.merge配置条目以将起点分支标记为新分支的"上游".这个配置会告诉git显示两个分支git status和git 之间的关系branch -v.此外,它在git pull没有参数的情况下指示在检出新分支时从上游拉出.当起点是远程跟踪分支时,此行为是默认行为.
false如果需要git checkout,将branch.autoSetupMerge配置变量设置为,并git branch始终表现为 - 如果给出了--no-track.always如果在起点是本地或远程跟踪分支时需要此行为,请将其设置为.
我可以看到,当人们想要创建分支跟踪上游分支时,人们会与此开关相关联
这是什么意思?是我还是这个开关描述令人困惑.当我使用term时upstream,我指的是另一个我可以推动更改的远程仓库(fork).
当我开始跟踪远程分支时会发生什么?它在当地表现如何?
的上游分支的分支,或的跟踪远程分支仅仅是默认情况下将使用时与之交互的分支git pull和git push命令.
将分支拉入您的分支时,您可以明确地执行此操作:
git pull origin the_branch
Run Code Online (Sandbox Code Playgroud)
它将获取远程,origin然后合并origin/the_branch到您当前的分支.
如果您通过设置上游分支来总是使用相同的分支,则可以启动git pull:
git branch --set-upstream-to origin/the_branch
git pull
Run Code Online (Sandbox Code Playgroud)
默认情况下,当您从远程分支启动新分支时,git会将其添加为上游分支:
git checkout -b origin/the_branch
# Is equivalent to
git branch --track the_branch origin/the_branch
git checkout the_branch
Run Code Online (Sandbox Code Playgroud)
推动时,几乎是一回事.
配置push.default将确定在git push没有参数的情况下使用时要推送的默认分支.
有了这个值upstream,它就会直接进入上游分支.
使用默认值时simple,它将执行相同的操作,但前提是本地和上游分支名称相同.
我让你看一下doc来检查其他配置的可能性.
您可以使用-vv开关查看所有分支的当前上游分支:
$ git branch -vv
* my_branch 33f2d4c [origin/mybranch] a useful commit
master 3ed8e99 [origin/master] Merge
the_branch dbbb8c0 [origin/the_branch] commit on the branch
Run Code Online (Sandbox Code Playgroud)
分支的上游分支也可以@{upstream}参考引用:
$ git rev-parse --symbolic-full-name --abbrev-ref @{upstream}
origin/the_branch
Run Code Online (Sandbox Code Playgroud)
push分支作为等价物@{push}(它将与@{upstream}99%的用例相同):
$ git rev-parse --symbolic-full-name --abbrev-ref @{push}
origin/the_branch
Run Code Online (Sandbox Code Playgroud)
区分@{upstream}和@{push}用于使用三角形工作流的情况:从只读"上游"项目(通常是按惯例调用的远程upstream)拉出并推送到可写存储库.
这就是GitHub上使用的分叉工作流程的情况.
我发了一篇关于此的(法国)博客文章,这里是自动翻译的版本.
| 归档时间: |
|
| 查看次数: |
3396 次 |
| 最近记录: |