首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Git中,本地分支可以相互跟踪--这有什么用呢?

在Git中,本地分支可以相互跟踪--这有什么用呢?
EN

Stack Overflow用户
提问于 2011-12-08 22:16:06
回答 3查看 7.7K关注 0票数 21

我听说在Git中,你可以让一个local branch A跟踪另一个local branch B

为什么会有人想这么做呢?

EN

回答 3

Stack Overflow用户

发布于 2011-12-08 23:48:52

让一个本地分支跟踪另一个本地分支时,脑海中浮现的主要事情是(1)来自Git的关于分支在被跟踪分支的前面/后面的更多通知消息,以及(2)触发器挂钩。

Git显示更多信息的一个区域是创建分支时。创建basic branch如下所示:

代码语言:javascript
复制
$ git co -b A master
Switched to a new branch 'A'

而创建一个tracking branch看起来像这样:

代码语言:javascript
复制
$ git co --track -b B master
Branch B set up to track local branch master.
Switched to a new branch 'B'

这将在.git/config中添加以下内容

代码语言:javascript
复制
[branch "B"]
    remote = .
    merge = refs/heads/master

在分支AB上提交一些更改之后,在分支A上执行git status -s -b将显示## A,而在分支B上执行该命令将显示## B...master [ahead 1, behind 1],从而提供有关分支Bmaster之间关系的一些快速信息。

您可能希望本地分支跟踪另一个本地分支的另一个方面是触发hooks;特别是在git push期间触发pre-receiveupdatepost-receivepost-update。例如,您可能有钩子来触发在持续集成服务器上的构建,执行一些许可证头检查,检查空白格式错误,等等。

票数 14
EN

Stack Overflow用户

发布于 2015-12-01 23:33:41

在很多情况下,跟踪另一个本地分支是有用的。例如,在一些git工作流程中,有一些措施可以保护master不会直接接收推送请求。一个例子是代码审查或持续集成系统,它必须在提交登陆远程分支之前通过。另一个例子是,当一个项目由一组只接受拉请求的提交者管理时(GitHub项目经常这样做)。作为一名开发人员,我可能希望创建一个功能分支,然后提交该分支以供审查(或者向repo提交者提交一个pull请求)。然后,我可能想要继续本地开发,而我的团队成员异步审查我的代码,CI构建完成。为了在我之前提交的基础上继续开发,我可能会创建第二个本地分支来跟踪我的第一个本地分支。这允许我从第一次提交开始构建,即使提交还没有到达上游远程分支。此外,如果有人建议对我的第一个分支进行代码审查更改,或者CI构建失败,我可以更新该分支,然后将这些更改重新设置为下游本地分支。下面是如何设置一个分支来跟踪另一个本地分支。

给定一个本地特征分支:

代码语言:javascript
复制
$ 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

这表明本地跟踪分支masterbranch-1都跟踪origin remote上的master分支。我现在可以创建另一个分支,并将其设置为跟踪本地跟踪分支branch-1

代码语言:javascript
复制
$ 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
票数 9
EN

Stack Overflow用户

发布于 2011-12-08 22:30:23

我能想到的一个例子是,如果你有一个“稳定”分支。如果你能创建一个新的分支,比如“实验”,让它跟踪稳定的分支,那就太好了。

代码语言:javascript
复制
git checkout --track -b experiment stable
* do some experiments with some commits *
git push

除此之外,这可能是为了一致性(这只是一个猜测)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8432345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档