【问题标题】:Git merge with -X argument to override master branch's file, but still got some deleted codeGit 与 -X 参数合并以覆盖主分支的文件,但仍然有一些已删除的代码
【发布时间】:2017-02-14 03:41:58
【问题描述】:

我在 master 分支中有一个文件,如下所示:

void func(int a, string b) {
    ...
    if (a == 1) {
        ...
    }
    ...
}

....
func(1, "test");
...

然后我签出一个新的分支 b1,并做一些工作并将文件更改为:

void func(string c, string b) {
    ...

    ...
}

....
func("test", "test");
...

同时,master 分支已经被其他人更新了,所以我需要合并这个分支(有一些原因我不能重新设置它)。由于存在合并冲突,我添加了 -X 参数:

git merge -X ours master

它可以工作,但删除了代码段:

void func(string c, string b) {
    ...
    if (a == 1) {
        ...
    } 
    ...
}

....
func("test", "test");
...

合并时是否遗漏了一些参数?

【问题讨论】:

标签: git merge merge-conflict-resolution


【解决方案1】:

由于存在合并冲突,我添加了 -X 参数

这取决于何时您添加了-X ours:您需要正确取消发生冲突的初始合并(git merge abort),并在尝试与-X ours 合并选项。
然后你可以再试一次。

并且您需要确保删除的代码与您自己的代码在同一行(这意味着冲突,如果所述删除的代码被master 中的新版本修改):-X ours 仅在以下情况下有效这些行有冲突。

【讨论】:

  • 是的,我先尝试了“git merge master”,但发生了冲突。由于当前分支的代码是我需要的,因此我添加了 -X ours。问题是删除的代码仍然存在。删除的代码不是master分支修改的,但是同一个文件中还有其他修改。
  • @FeiyuZhou 是的,但是您需要先取消合并,然后使用 -X ours 重试。
  • @FeiyuZhou 那么那部分肯定没有卷入冲突。
  • 是的,删除的部分没有冲突。但是在我运行“git merge -X ours master”以解决我不想手动解决的冲突之后,被删除的部分并没有像预期的那样被删除。
  • 如果删除的部分没有冲突,-X ours 合并选项不会改变关于该特定部分的任何内容。
猜你喜欢
  • 1970-01-01
  • 2021-04-22
  • 1970-01-01
  • 2017-04-08
  • 2011-09-01
  • 2014-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多