2014-02-28 54 views
2

我們必須在它50多個項目.NET解決方案文件,我們有出現,每隔一段時間的情況:兩個人會做出相對小的變化(如更新NuGet包或重命名一個文件)影響所有50個項目文件。自動解決衝突的git在可能

這意味着,任何時候這些分支合併到這些文件的全部50個都將是衝突 - 但是如果你在幾乎任何合併工具打開它們就能夠自動地解決這些問題。這意味着合併時沒有實際的工作要做,但我必須單擊每個文件,等待它在Beyond Compare中打開,然後單擊保存,然後單擊關閉。點擊下一個文件,點擊保存,點擊關閉...重複55次。

我的問題是:有沒有什麼辦法,我可以讓GIT中,當遇到有衝突的文件,自動嘗試解決這些問題使用合併工具?

更新:希望這會增加一些清晰度:我不得不逐個解決每個衝突,但由於我的合併工具可以自動解決每個衝突,是不是有某種批處理操作或合併選項命令,我可以打電話?

+0

由於項目文件是簡單的MSBuild文件,你有沒有考慮過使用[進口的MSBuild(http://msdn.microsoft.com/en-us/library/92x05xfs.aspx)? –

+0

我發現這對你http://blogs.atlassian.com/2013/05/git-automatic-merges-with-server-side-hooks-for-the-win/ – abnvp

+0

謝謝你的職位阿比納夫,但是這不是我在找什麼。他們的帖子涉及在推送時自動進行合併,但我正在談論在本地合併時儘可能自動解決衝突。 – Richiban

回答

-1

您可以設置一個混帳時合併工具則有可能不會被git的自動解決衝突。請看看:

git-mergetool

+0

對不起,如果我誤解了,但我不認爲你讀了我的問題。我已經配置了一個合併工具 - 但是當我的合併工具能夠自動解析每一個合併工具時,我不得不一一解決每個衝突。 – Richiban

+0

@Richiban你可以使用git mergetool,它不會提示你發生每次衝突,從鏈接:'-y' '--no-prompt' '不要在每次調用合併解決方案之前提示program.' – Daniel

0

你的合併工具「超越比較」使用一些合併策略顯示的差異,並導致並排側。確定工具正在使用的合併策略,然後在GIT中找到等效策略。有關可用策略及其選項,請參閱git help merge

默認情況下,GIT使用「遞歸」策略。作爲一個快速檢查,你可以採用'解決'策略,看看你是否得到你想要的決議。

git merge -s resolve ... 

,或者使用「遞歸」戰略,或兩個可能的選擇,如:

git merge [-s recursive] -X ignore-all-space 

一旦你確定所需的策略,你可以使用配置變量設置爲默認或者使用命令別名。