Git分支在dev上工作,同时将一些更改合并到master中

时间:2011-04-04 18:32:27

标签: git

以前,使用SVN,我会有一个分支,它是我的开发分支,它与开发站点上的代码相匹配。有一段时间,我会在开发分支中进行更改,然后将更改合并到主干中,这样我就可以将其投入生产。我想知道如何用git完成类似的东西。

基本上,我希望能够将分支中的1个或几个提交合并到主服务器中,而无需合并整个分支。

或者我应该以不同的方式使用git? (我需要立即发布更改,所以我无法完成所有更改。)我应该使用多个分支吗?我可以将1个分支合并到多个其他分支中吗?

2 个答案:

答案 0 :(得分:2)

你几乎已回答了你的问题:是的,你可以将一个分支合并到多个其他分支中。

所以,你想要做的是为这个功能/ bug修复(通用名称是“主题”)创建一个分支,从你想要将它合并到的所有分支的共同祖先开始。做你的工作,提交它,然后将它合并到所有这些中。

# say version 1.2.3 is a common ancestor, and it's tagged
git checkout -b bugfix v1.2.3

# do some stuff
git add ...
git commit

git checkout master
git merge bugfix

git checkout dev
git merge bugfix
...

这里的关键部分是确保在共同的祖先开始你的分支。如果你不这样做,你最终也会合并其他东西。

如果由于某种原因很难找到一个好的共同祖先,你可以回到cherry-picking。这基本上将提交从一个地方复制到另一个地方。但是,尽管如此,最好避免使用它,因为它确实意味着你最终会在历史记录中提交两份提交副本。

答案 1 :(得分:1)

我更喜欢在git中创建“主题分支”,我在自己的分支中实现了一个功能。然后,我可以选择将其合并到开发或生产中,还是两者兼而有之。这样可以继续进行功能开发,而错误修复仍然可以在合理的时间内应用于生产。

它在概念上与此处解释的模型类似:http://nvie.com/posts/a-successful-git-branching-model/