在 Git 中,我们可以这样做:
$ git checkout -b testbranch --track master
Branch testbranch set up to track local branch master.
Switched to a new branch 'testbranch'
这些分支的用例是什么?
在 Git 中,我们可以这样做:
$ git checkout -b testbranch --track master
Branch testbranch set up to track local branch master.
Switched to a new branch 'testbranch'
这些分支的用例是什么?
设置一个本地分支来跟踪另一个本地分支通常不是很有用,但我可以想到一些可能很方便的情况:
您可能有一些别名或脚本来处理上游分支(例如,通过@{u}
简写;参见 参考资料git help revisions
)。如果是这样,将本地分支配置为跟踪另一个本地分支将允许您测试别名或脚本,而不会影响远程存储库或创建临时虚拟存储库。
假设您正在处理一个名为foo
本地master
分支(跟踪origin/master
)的新本地分支,但您还没有准备好发布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
origin
master
push.default
upstream
相反,您可以配置本地foo
分支来跟踪您的本地master
分支。现在你打字的习惯git rebase
就是你想要的,一个心不在焉的git push
只会弄乱你的本地master
分支,而不是你origin
的master
分支。
但是配置一个本地分支来跟踪另一个本地分支通常是不值得的git rebase
。我认为记住输入git rebase master
而不是git rebase
. 如果我忘记了,我会收到一条错误消息,让我记忆犹新,然后我再试一次。没什么大不了的。
我尝试了这个命令,发现 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