1

我不確定這是我們面臨的Git還是IntelliJ問題。假設下面的使用Git整合的IntelliJ:如何在Git/IntelliJ中強制手動合併,如果相同的文件但編輯了不同的行?

  1. 用戶A改變一個文本文件,並提交和推動這種變化分支BRANCH1

  2. 用戶B更改同一個文本文件但在不同的線並致力於BRANCH1

  3. 用戶B獲取遠程存儲庫,並且合併所述遠程BRANCH1到本地BRANCH1

當前行爲:它融合wihout任何衝突(因爲不同的線路?)

通緝行爲:解決衝突窗口彈出窗口並用戶必須決定是否繼續應用所有沒有衝突的更改。

但是,爲什麼你可能想要這個behvaior?:有時我們遇到了標記或js文件的問題,其中一位開發人員在頂部進行了一些更改(例如,刪除了一個未使用的函數),另一位開發人員依賴於此。如果你想知道這些休息時間,你必須有非常昂貴的UI測試。特別是如果它只是標記(例如jsf標籤,參數)

+0

但用戶和用戶B正在改變相同的線?因爲,不存在衝突,如果被改變了不同的路線。 – kikicarbonell

+0

我知道,如果線條不同,它不是衝突。但是,是否有可能像衝突和強制手動合併一樣處理它?有時候,我們遇到了標記或js文件的問題,其中一位開發人員在頂部進行了某些更改(例如,刪除了一個未使用的函數),另一位開發人員依賴於此。如果你想了解這些休息時間,你必須有非常昂貴的UI測試。特別是如果它只是標記(例如jsf標記,params)。 – fischermatte

+0

爲了避免你的問題,我建議:測試每個源代碼並保持一個審查生命週期,以確保一切正確 – kikicarbonell

回答

1

這似乎是你想要的奇怪行爲。通過上次編輯,我可以得到您想要的結果,但我認爲您希望使用工具來解決與工具本身無關的問題。

我沒有直接的答案,我甚至不認爲有強制合併審查的選項。但是,您可能會開發一個合併流程,在該流程中,您要求您的同事在合併之前進行差異分析。所以基本上:

  1. 做的修改本地機器上
  2. git diff REMOTE/BRANCH -- files
  3. 要求開發商查看更改
  4. 如果如願,提交和推送更改一切都。否則,取消不必要的變化,從2

重複正如你所看到的,過程變得真的笨拙和緩慢的,它仍然容易出錯(如果我刪除一行,通常我知道我刪除如果沒有測試被破壞,我可能會被要求重新檢查刪除數百次並仍然保留)。

到目前爲止,這是我能夠建議你的唯一幫助,如果你找到任何方法以更直接的方式實現你的目標,請評論這個答案,或提供你自己的解決方案,我總是很高興學習新的東西!

2

我不確定這是否是您想要的,但您可以使用git merge命令的--no-commit選項假裝合併失敗,即使沒有衝突。從手冊:

With --no-commit perform the merge but pretend the merge failed 
and do not autocommit, to give the user a chance to inspect and 
further tweak the merge result before committing. 

然後,您可以用--cached選項來檢查合併的結果與檢查的git diff變化; 並使用git checkout與選項--ours--theirs接受或拒絕合併引入的更改。

+0

thx爲此。我並不是很喜歡用git,或多或少地使用intellij提供的工具。可以在提取/合併時設置'--no-commit'標誌。因此我看到了這些變化,並且可以像你說的那樣檢查它們。但是這與在合併(?)之前使用遠程分支做差異是一樣的。所以在兩個方面 - 必須手動檢查所有文件,並嘗試找出潛在的衝突。 – fischermatte

相關問題