繁体   English   中英

强制Git导致合并冲突

[英]Force Git To Cause Merge Conflict

我在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分支中,如何在不单独更改每个文件内容的情况下强制发生合并冲突?

为了在任何一个特定文件中产生冲突,您需要安装Git:

  1. 与大多数合并一样,计算合并基础提交;
  2. 发现此提交是两个分支提示提交的祖先;
  3. 发现合并基础的一个特定文件与两次提交中的相同文件都不相同;
  4. 最后,发现结合这些更改会导致冲突。

有关前三个问题的更多信息,请参阅前面的许多问题。 我在这里有一个很长的形式的答案 ,涉及合并策略的详细信息,并讨论在给定默认合并类型的情况下查找合并基础的正常过程。 有关第4点的更多信息,请参阅git merge冲突何时确切发生

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

您也可以得到我所说的高级冲突,如eftshift0在评论中指出 为此,文件的合并基础版本可以是:

  • 丢失:这是一个“添加/添加”冲突
  • 与两个小技巧提交中的一个具有不同的名称,而在另一个小技巧提交中则缺少:这是“重命名/删除”冲突
  • 与一个提示中的内容不同,而在另一个提示中将其删除:这是“修改/删除冲突”
  • 在三个提交中具有三个不同的名称:这是“重命名/重命名”冲突

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

暂无
暂无

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

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