簡體   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