客户想要我们产品的定制版本,因此我们将 master
分支分支为 client
分支。不过,我最终对 client
进行了重要更改,现在我想将它们 merge 回 master
中。这些包含大约 20 个提交(比如说 200 个),其中一些是相邻的,但大部分是通过分支的提交日志随机分布的。
我知道 gitcherry-pick 是为此设计的,但我的印象是它不保留提交历史记录,而且它似乎忽略了提交日志,我不想复制和粘贴这些日志20次。我还想避免在将任何进一步的 master
更改 back merge 到 client
时出现问题,我确信我们需要这样做开发我们的产品并希望将这些新功能和错误修复 merge 到自定义客户端版本中。
有没有办法 merge 这 20 个提交,同时保持简单的可 merge 性并保留原始提交消息?
最佳答案
cherry-pick
是正确的工具。您可以将母版 merge 回来(最好在挑选之后立即进行),如果更改相同,您将不会遇到任何冲突,所有内容都会很容易地 merge 回来。当然,如果在挑选过程中您要解决冲突,那么在 merge 过程中也可能会出现冲突。但这里没有简单的解决方案。
值得一提的是,VCS 用于开发过程中的版本控制,客户端分支并不是最好的方法。最好使用构建工具为不同的客户端进行不同的构建,因此应使用一个 VCS 修订版为所有客户端构建应用程序。
关于git - 如何 merge 来自另一个分支的单个提交而不产生副作用(又名不使用cherry-pick)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33269494/