如何保持本地分支与最新版本同步?

4
我在我的代码库中有几个分支,随着时间的推移,我发现保持它们全部更新变得越来越困难。我可以确信主分支(master)总是最新的,因为很容易记住,我想这可能是我的SVN思维方式仍然存在。
我的问题类似于这样。我在bugfix2分支中进行更改,一旦提交完成,我将更改合并到主分支,但是其他分支都不是最新的。我必须手动将bugfix2合并到每个其他分支中。随着我的分支列表增长,我认为执行所有这些合并操作是不现实的。
是否有相应的命令或者我的工作流程错了?
3个回答

2
一般的工作流程是从最具体的分支合并到不那么具体的分支。
但是对于需要向所有其他分支报告错误的情况,只需简单地合并到其他分支即可,并且可以编写脚本(甚至别名): (参考链接)
for i in $branches; do
   git checkout $i
   git merge bugfix2
done

这个自动化有点问题。总感觉有些不对劲。不过这是个有用的解决方案,我会暂时使用它。 - Razor
@Vince:通常,“不对”的情况是分支之间缺乏关联(你不知道要从哪个分支合并到哪个分支)。良好的分支命名规范可以提供帮助。 - VonC

1

我的建议是将您需要的任何内容合并到您当前正在工作的分支中,不要担心在下一次工作之前保持其余部分最新。我在公司集中式版本控制系统之上本地使用git的原因之一是它允许分支有点过时。难以重现的错误可以针对报告的确切版本进行处理。可以调试新功能,而无需想知道是您的更改导致了问题还是您刚刚拉下来以推送单独修复的更新。当然,不要让您的分支与master分支相差太远,但不要因为“仅仅因为”而一直保持它们始终最新。在最佳时间更新它们。


-1

我的建议工作流程是,一旦主分支前进,就在主分支上重新定位您的错误修复分支。这样,您的历史记录保持干净,不包含太多合并提交。


1
这不是一个好的实践。在特定的代码库状态下进行错误修复,将其重新基于主分支使其成为“浮动提交”,并且您会失去它被应用的时间信息。最好将其合并到其他分支中。 - CharlesB
在修复错误的分支方面,你是对的。对于功能分支,比如他的示例中的newfeature分支,我的工作流程会更好。我并不是说一旦合并就要重新定义一个bugfix分支。但如果你正在你的bugfix分支上工作(尚未合并),并且你想要主分支的最新更改,为什么不使用rebase呢?开始bugfix分支的时间真的很重要吗? - dunni
重新定位特性分支是可以的;至于错误修复:重要的是要知道它所纠正的状态。此外,重新定位它们可能会导致其他错误,因此它会得到更复杂的历史记录。 - CharlesB

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接