以前,使用SVN,我会有一个分支,它是我的开发分支,它与开发站点上的代码相匹配。有一段时间,我会在开发分支中进行更改,然后将更改合并到主干中,这样我就可以将其投入生产。我想知道如何用git完成类似的东西。
基本上,我希望能够将分支中的1个或几个提交合并到主服务器中,而无需合并整个分支。
或者我应该以不同的方式使用git? (我需要立即发布更改,所以我无法完成所有更改。)我应该使用多个分支吗?我可以将1个分支合并到多个其他分支中吗?
答案 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/