繁体   English   中英

Git 挑选所有提交

[英]Git cherry-pick picking all commits

假设我们有一个名为Master的分支和另一个名为Dev的分支,它基于Master

我们已经为不同的特性从Dev创建了几个分支,它们都被合并到Dev中。

然后我们将Dev合并到Master中,所以现在它们很相似。

后来,我们从 dev 中得到了一个分支featureA ,然后我们将它合并到 dev 中。 然后我们还有另一个分支featureC从 dev 出来,它也被合并到 dev 中。

所以现在Dev包含featureAfeatureCMaster不是

我们要做的只是featureC上所做的更改包含到Master中。

所以我想在Master上使用cherry-pick 但是,当我这样做时,它表明存在冲突,当我查看它时,它实际上向我显示了源(开发)上featureAfeatureC所做的所有更改,我只能将它们全部添加到目标(主)

您可以看到下面的图片进行演示。 我做了一个小例子以便更好地理解,我只能检查两个提交

所以现在我必须添加所有更改(来自 A 和 C),然后删除在功能 A 中所做的更改,这样做非常冒险,我相信

难道我做错了什么? 因为我看不到使用cherry-pick的任何好处? 它的主要用途是从一个分支选择一个特定的提交到另一个分支,而上面的情况并非如此。

在这种情况下,您可以在从featureCmaster的提交范围内执行挑选。 这将起作用,并且是处理此问题的简单方法。 假设您正在使用合并提交,该调用通常看起来像git cherry-pick -m1 featureC-merge-commit

但是,由于您在dev上也有其他更改,那些来自featureA的更改,您可能会遇到必须解决的冲突。 话虽如此,您不需要完全接受一方或另一方。 预计您可能需要编辑冲突代码,使其仅包含您想要包含的更改。 如果您使用的工具不允许您执行此操作,或者您不知道如何使其执行此操作,那么您可能希望使用其他工具(例如常规文本编辑器)来执行这些变化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM