跟踪其他本地分支机构的本地分支机构有哪些用例?

时间:2012-12-26 19:37:59

标签: git version-control

在Git中我们可以这样做:

$ git checkout -b testbranch --track master
Branch testbranch set up to track local branch master.
Switched to a new branch 'testbranch'

此类分支的用例是什么?

2 个答案:

答案 0 :(得分:6)

设置本地分支以跟踪另一个本地分支通常不是很有用,但我可以想到几个可以方便的情况:

  • 您可能有一些别名或脚本可以处理上游分支(例如,通过@{u}简写;请参阅git help revisions)。如果是这样,配置本地分支以跟踪另一个本地分支将允许您测试别名或脚本,而不会影响远程存储库或创建临时虚拟存储库。

  • 假设您正在处理名为foo的本地master分支(跟踪origin/master)的新本地分支,但您尚未准备好发布{{ 1}}到foo。或许你可能不想推送到origin - 也许这些提交添加了一堆令人讨厌的origin调用,以帮助调试。无论如何,每当更新printf()时,您都希望将master重新定位到foo。通常你只需输入master,但如果你像我一样,你可能会发现自己经常只是习惯性地输入git rebase master。如果您这样做,您将收到以下错误消息:

    git rebase

    你可能想要这样做:

    $ git rebase
    There is no tracking information for the current branch.
    Please specify which branch you want to rebase against.
    See git-rebase(1) for details
    
        git rebase <branch>
    
    If you wish to set tracking information for this branch you can do so with:
    
        git branch --set-upstream-to=origin/<branch> foo
    

    但如果您习惯每次提交git branch --set-upstream-to=origin/master foo 次提交,那么这会产生破坏性影响(您最终会在本地git push分支上推送您正在进行的工作提交foo的{​​{1}}分支,假设您origin设置为master,就像我一样。

    相反,您可以配置本地push.default分支以跟踪您的本地upstream分支。现在你打字foo的习惯做了你想要的,而心不在焉master只会弄乱你的本地git rebase分支,而不是git push master分支。

    但是,配置本地分支以跟踪origin的另一个本地分支通常是不值得的。我认为记住键入master而不是git rebase更容易。如果我忘记了,我会收到一条错误信息,让我记忆犹新,然后再试一次。没什么大不了的。

答案 1 :(得分:0)

我尝试这个命令,发现master将作为一个'真正'的远程分支执行。

在.git / config中,添加了以下内容:

[branch "testbranch"]
    remote = .
    merge = refs/heads/master

你可以使用$git pull从主人那里取出,然后使用

推送到主人

$git push . testbranch:master

或者,您可以在.gitconfig

中添加以下配置后输入$git push
[push]
    default = upstream