我听说在Git
中,你可以让一个local branch A
跟踪另一个local branch B
。
为什么会有人想这么做呢?
发布于 2011-12-08 23:48:52
让一个本地分支跟踪另一个本地分支时,脑海中浮现的主要事情是(1)来自Git的关于分支在被跟踪分支的前面/后面的更多通知消息,以及(2)触发器挂钩。
Git显示更多信息的一个区域是创建分支时。创建basic branch如下所示:
$ git co -b A master
Switched to a new branch 'A'
而创建一个tracking branch看起来像这样:
$ git co --track -b B master
Branch B set up to track local branch master.
Switched to a new branch 'B'
这将在.git/config
中添加以下内容
[branch "B"]
remote = .
merge = refs/heads/master
在分支A
和B
上提交一些更改之后,在分支A
上执行git status -s -b
将显示## A
,而在分支B
上执行该命令将显示## B...master [ahead 1, behind 1]
,从而提供有关分支B
和master
之间关系的一些快速信息。
您可能希望本地分支跟踪另一个本地分支的另一个方面是触发hooks;特别是在git push
期间触发pre-receive
、update
、post-receive
和post-update
。例如,您可能有钩子来触发在持续集成服务器上的构建,执行一些许可证头检查,检查空白格式错误,等等。
发布于 2015-12-01 23:33:41
在很多情况下,跟踪另一个本地分支是有用的。例如,在一些git工作流程中,有一些措施可以保护master不会直接接收推送请求。一个例子是代码审查或持续集成系统,它必须在提交登陆远程分支之前通过。另一个例子是,当一个项目由一组只接受拉请求的提交者管理时(GitHub项目经常这样做)。作为一名开发人员,我可能希望创建一个功能分支,然后提交该分支以供审查(或者向repo提交者提交一个pull请求)。然后,我可能想要继续本地开发,而我的团队成员异步审查我的代码,CI构建完成。为了在我之前提交的基础上继续开发,我可能会创建第二个本地分支来跟踪我的第一个本地分支。这允许我从第一次提交开始构建,即使提交还没有到达上游远程分支。此外,如果有人建议对我的第一个分支进行代码审查更改,或者CI构建失败,我可以更新该分支,然后将这些更改重新设置为下游本地分支。下面是如何设置一个分支来跟踪另一个本地分支。
给定一个本地特征分支:
$ git co -b branch-1
$ git branch -u origin/master
Switched to a new branch 'branch-1'
$ git branch -vv
* branch-1 9f0c361 [origin/master] Some commit message
master 85ede1a [origin/master] Some commit message
这表明本地跟踪分支master
和branch-1
都跟踪origin
remote上的master
分支。我现在可以创建另一个分支,并将其设置为跟踪本地跟踪分支branch-1
。
$ git co -b branch-2
Switched to a new branch 'branch-2'
$ git branch -u branch-1 branch-2
Branch branch-2 set up to track local branch branch-1 by rebasing.
$ git branch -vv
branch-1 85ede1a [origin/master] Some commit message
* branch-2 85ede1a [branch-1] Some commit message
master 85ede1a [origin/master] Some commit message
发布于 2011-12-08 22:30:23
我能想到的一个例子是,如果你有一个“稳定”分支。如果你能创建一个新的分支,比如“实验”,让它跟踪稳定的分支,那就太好了。
git checkout --track -b experiment stable
* do some experiments with some commits *
git push
除此之外,这可能是为了一致性(这只是一个猜测)。
https://stackoverflow.com/questions/8432345
复制相似问题