git - 如何 merge 来自另一个分支的单个提交而不产生副作用(又名不使用cherry-pick)?

标签 git version-control merge git-rebase git-cherry-pick

客户想要我们产品的定制版本,因此我们将 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/

相关文章:

svn - 我如何在 svn 中显示 "merge forward"?

python - pandas 数据库合并多列未正确合并

git - 仅当 VPN 处于事件状态或在公司网络上时才让 git 使用代理

git - 按文件扩展名过滤(排除)git log 结果

git - IntelliJ IDEA git 克隆一个特定的分支

mysql - 保留页面更改历史记录。有点像 SO 对修订所做的

sql - 支持将文本 block 拖动到窗口中的并排差异程序?

android - 每个模块必须有一个唯一的路径

eclipse - 推送到github存储库时需要错误401授权

git - 从 Git 背景了解 TFS;特别是 TFS 中的分支有何不同