Git merge 引入了我没接触过的新文件

问题描述 投票:0回答:1

我有一个主分支并创建了一个名为

NewBranch
的分支。在这个分支中,我修改了一些文件,并将一些文件移动到名为
_deprecated
的文件夹中。合并时,我遇到了一些错误:

    added by them:   _deprecated/file1
    added by us:     _deprecated/file2
    deleted by us:   _deprecated/file3
    deleted by them: _deprecated/file4
    both deleted:    _deprecated/file5

令人烦恼的是,我从来没有碰过

file2
file3
,那为什么它们会出现在这里呢?另外,为什么合并的时候会有
both deleted
之类的东西?两个分支都删除文件怎么会出现合并冲突呢?

git
1个回答
0
投票

您的场景涉及 Git 中复杂的合并情况,这可能会令人困惑。让我们分解一下您遇到的问题:

  1. “他们添加”和“我们添加”消息

    • 这些消息表明相同的文件已添加到
      NewBranch
      master
      分支中,但方式不同或内容不同。
    • 对于
      file1
      file2
      ,似乎两个分支都对这些文件进行了更改,但方式不同。这就是 Git 通知您这些冲突的原因。
  2. “被我们删除”和“被他们删除”消息

    • 这表明一个分支已删除该文件,而另一个分支已对其进行了更改。
    • 在您的情况下,
      file3
      已在
      NewBranch
      中删除,但在
      master
      分支中进行了修改,反之亦然。同样对于
      file4
  3. “都已删除”消息

    • 此消息意味着两个分支中的同一个文件已被删除。令人惊讶的是,这仍然会引起冲突。
    • 如果在删除之前在每个分支中以不同的方式修改文件,通常会发生这种类型的冲突。然后,Git 需要确认哪个版本的文件被视为“已删除”,特别是如果文件删除是在不同的提交中完成的。

关于您对

file2
file3
的困惑:

  • 这些文件可能是由
    master
    分支上的其他人移动或修改的,或者可能是通过自动化流程或脚本移动或修改的。
  • 如果您确定没有触及这些文件,那么检查两个分支的提交历史记录以了解所做的更改以及由谁进行的更改非常重要。使用
    git log
    或基于 GUI 的 Git 工具来检查历史记录。

解决这些冲突:

  • 手动审查每个冲突。决定是否保留
    NewBranch
    master
    分支或两者的某种组合的更改。
  • 对于“同时删除”的文件,您通常只需确认删除即可。
  • 解决每个冲突后,使用
    git add
    将已解决的文件添加到暂存区域。
  • 解决所有冲突后,您可以使用
    git commit
    完成合并。

请记住,在这些情况下,与团队的沟通至关重要。如果您不确定文件被修改或删除的原因,请咨询您的团队成员。这有助于避免将来出现类似问题。

© www.soinside.com 2019 - 2024. All rights reserved.