18

在 Git 中,我们可以这样做:

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

这些分支的用例是什么?

4

2 回答 2

6

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

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

  • 假设您正在处理一个名为foo本地master分支(跟踪origin/master)的新本地分支,但您还没有准备好发布fooorigin。或者,也许你永远不想推送origin——也许提交添加了一堆令人讨厌的printf()调用,你为了帮助调试而撒入。无论如何,无论何时master更新,您都希望重新定位foomaster. 通常你只会打字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上的正在进行的提交推送到的分支) .foooriginmasterpush.defaultupstream

    相反,您可以配置本地foo分支来跟踪您的本地master分支。现在你打字的习惯git rebase就是你想要的,一个心不在焉的git push只会弄乱你的本地master分支,而不是你originmaster分支。

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

于 2012-12-31T19:36:11.347 回答
0

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

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

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

你可以从 master using 中拉取$git pull,并 push to master using

$git push . testbranch:master

或者您可以$git push在 .gitconfig 中添加以下配置后键入

[push]
    default = upstream
于 2012-12-27T09:13:17.110 回答