gpt4 book ai didi

Git merge -X theirs 不 merge 所有更改

转载 作者:太空狗 更新时间:2023-10-29 14:29:51 25 4
gpt4 key购买 nike

我 checkout 了一个分支,我想 merge 到 master 中。该分支落后于master,因为master已经两周没有与该分支 merge ,所以我想使用master的所有更改。

我做了以下事情:

git merge -s recursive -X theirs master

在大多数情况下,它 merge 了,但至少有几个地方没有发生冲突。

例如,有一行:

#import "VMVideo_Private.h"

这是在过去两周的某个时候从 master 中取出的,但是由于这个分支在过去两周内没有被 merge ,它仍然存在于分支中。

使用 theirs merge 后,它仍然存在。

此外,如果我尝试手动 merge 一个:

git merge master

这种特殊的冲突根本不会出现。

最佳答案

在递归 merge 策略中,-X theirs(或者就此而言-X ours)只是意味着在发生冲突的情况下它应该通过选择“他们的版本”(或“我们的版本”,使用 -X ours)自动解决冲突。

如果没有冲突,您的-X选择根本不会起作用。

例如,假设在原始(通用 merge 基础)版本中,文件 foo.txt 第 34 行说 Rumplestiltskin。进一步假设您将其更改为 George Clooney。最后,假设文件 foo.txt 实际上在 master 中发生了更改,但距离第 34 行不远。现在您要求 git 将他们(master 的)更改与您的更改 merge :它保留您的更改,其中 Rumplestiltskin 变成了 Clooney,因为与他们的更改没有冲突,其中 foo.txt 现在声称是 true 而不是 false。由此产生的 merge 现在提出了关于克鲁尼先生的声明(它声称是真的),而不是关于一个童话人物。

(在某些情况下,git——它只是对各种版本进行diff——将决定你和他们对某些代码(或文本)所做的更改最好用以下内容表示, 在语义上是毫无意义的。例如,对于 C 和 Java 代码,它可能会错误地在行上同步,除了一个大括号之外什么都没有。由此产生的 merge 可能是可笑的,也可能是悲惨的,糟糕的。有时选择修改后的 diff 算法,例如, "patience diff", 可以提供帮助。有时没有任何帮助。)

关于Git merge -X theirs 不 merge 所有更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29420301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com