[英]Git cherry-pick picking all commits
假设我们有一个名为Master
的分支和另一个名为Dev
的分支,它基于Master
。
我们已经为不同的特性从Dev
创建了几个分支,它们都被合并到Dev
中。
然后我们将Dev
合并到Master
中,所以现在它们很相似。
后来,我们从 dev 中得到了一个分支featureA
,然后我们将它合并到 dev 中。 然后我们还有另一个分支featureC
从 dev 出来,它也被合并到 dev 中。
所以现在Dev
包含featureA
和featureC
而Master
不是
我们要做的只是将featureC
上所做的更改包含到Master
中。
所以我想在Master
上使用cherry-pick
。 但是,当我这样做时,它表明存在冲突,当我查看它时,它实际上向我显示了源(开发)上featureA
和featureC
所做的所有更改,我只能将它们全部添加到目标(主)
您可以看到下面的图片进行演示。 我做了一个小例子以便更好地理解,我只能检查两个提交
所以现在我必须添加所有更改(来自 A 和 C),然后删除在功能 A 中所做的更改,这样做非常冒险,我相信
难道我做错了什么? 因为我看不到使用cherry-pick的任何好处? 它的主要用途是从一个分支选择一个特定的提交到另一个分支,而上面的情况并非如此。
在这种情况下,您可以在从featureC
到master
的提交范围内执行挑选。 这将起作用,并且是处理此问题的简单方法。 假设您正在使用合并提交,该调用通常看起来像git cherry-pick -m1 featureC-merge-commit
。
但是,由于您在dev
上也有其他更改,那些来自featureA
的更改,您可能会遇到必须解决的冲突。 话虽如此,您不需要完全接受一方或另一方。 预计您可能需要编辑冲突代码,使其仅包含您想要包含的更改。 如果您使用的工具不允许您执行此操作,或者您不知道如何使其执行此操作,那么您可能希望使用其他工具(例如常规文本编辑器)来执行这些变化。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.