如果我有一个包含3个分支的公共Git存储库,如下所示:
(release-to-customerA)
|
U (master)
/ |
A---B---C---D---E ... S---T
|
(release-to-customerB)
Run Code Online (Sandbox Code Playgroud)
其中提交'B'是原始发布版本,提交'U'解决了'B'中的一些错误.我想将提交'U'应用于master和release-to-customerB分支,以及下次我根据提交'D','E',...'T向客户提供新版本时',我想要提交'U'.最干净的方法是什么?
我知道git rebase或者git cherry-pick可以在我的本地存储库中执行该操作,但是当我将重新定位的工作提交到公共存储库时,我会搞砸历史记录吗?
谢谢你的回答.
虽然采摘樱桃会起作用,但我不确定你为什么要这样做.它会创建重复的提交,如果您想要合并,可能会导致问题.实际上,这似乎是您要合并的情况!
(bugfixB, releaseA)
--------------------- Y (master)
/ /
U---X (releaseB) /
/ / /
A---B---C---D---E ... S---T
Run Code Online (Sandbox Code Playgroud)
请注意,我添加了一个分支名称bugfixB - 这是一个非常一般的想法.提交U应该在一个分支上进行,其目的是修复B(可能是几个提交).然后应该将该分支合并到需要错误修复的所有分支中 - 在本例中为releaseA,releaseB和master.
git checkout -b bugfixB <SHA1 of B>
# fix things, add changes
git commit
# for each branch...
git checkout releaseA
git merge bugfixB
git checkout releaseB
git merge bugfixB
git checkout master
git merge bugfixB
Run Code Online (Sandbox Code Playgroud)