强制Git导致合并冲突

时间:2018-05-28 13:08:16

标签: git

我有几个文件,我想在我的dev_branch中“无效”让我们称之为分支“A”所以一旦与另一个dev_branch合并,我们称之为分支“B”我得到合并冲突。我提到的那几个文件之前已在其他名为B的dev_branch中编辑过。

这是我到目前为止所尝试的内容:

我从我的分支“A”的索引缓存中删除了文件并再次添加回来。

git checkout -b feature/A origin/feature/A
git -rm -r --cached "myFolder"
git commit -am "removed the files"
cd "myFolder"
git add .
git commit -am "added back the files"

到目前为止,分支A是远离master和分支B的两个提交,只有一个具有已编辑的文件,现在我尝试合并但仍未获得合并冲突

git merge origin/feature/B

为什么我不能导致合并冲突?两者都提交不在master分支中 如何在不单独更改每个文件内容的情况下强制合并冲突?

1 个答案:

答案 0 :(得分:0)

为了在任何一个特定文件中出现冲突,您需要使用Git:

  1. 计算合并基础提交,就像大多数合并一样;
  2. 发现此提交是两个分支提示的祖先;
  3. 发现合并基础中的一个特定文件 提示提交中的同一文件不同;
  4. 最后,发现合并这些更改会导致冲突。
  5. 有关前三个问题的更多信息,请参阅以前的许多问题。我有一个long form answer here,它详细介绍了合并策略,并讨论了在默认的合并类型下找到合并库的正常过程。有关第4点的更多信息,请参阅when exactly does a git merge conflict arise

    (运行git merge时索引/暂存区域的内容与此特定进程无关,除了git merge通常要求索引为“干净”,即匹配当前提交,开始。)

    您还可以将{em>高级冲突称为eftshift0 notes in a comment。为此,文件的合并基础版本可以是:

    • 缺失:这是“添加/添加”冲突
    • 具有与两个提示之一不同的名称,并且在另一个提示提交中丢失:这是“重命名/删除”冲突
    • 在基础与一个提示中有不同的内容,并在另一个提示中删除:这是“修改/删除冲突”
    • 在三次提交中有三个不同的名称:这是“重命名/重命名”冲突

    (我认为这涵盖了所有可能的情况)。