在Git中我们可以这样做:
$ git checkout -b testbranch --track master
Branch testbranch set up to track local branch master.
Switched to a new branch 'testbranch'
此类分支的用例是什么?
答案 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