2015-07-21 32 views
1

如何明確地停止Git試圖合併?我從來沒有希望它合併。如何停止合併(又是....)

How to make Git honor a cancelled merge that was not asked for?,我知道該工具不尊重我的取消,因爲它殺了編輯器而沒有問我。所以現在我只是kill -9的終端程序。

如果我遇到了Git想要合併的情況,我總是需要服務器的源文件副本。我只是在本地刪除文件,然後從服務器再次獲取它。


眼下,Git是DoS'ing我與這片善良的:

您還沒有得出結論的合併(MERGE_HEAD存在)。
請在合併之前提交更改。

當然,git reset HEAD <file>沒有工作。

這裏是最好的部分:他們是確切相同的文件。有沒有他們之間的差異。我做了一個改動,我在8到12個不同的平臺上測試它(使用scp複製),然後在測試之後在其中一個盒子上檢查它。但從Tell Git to stop prompting me for conflicts when none really exist?,我知道這個工具太愚蠢,不能顯示這方面的任何情報。


如果您想知道,有一組來源。它們是位於遠程服務器上的項目源。我希望Git所做的就是結賬(克隆),更新(拉),告訴我發生了什麼變化(差異)和簽入(推)。我不需要該工具的任何其他功能。

回答

4

您可以使用keepTheir腳本爲.gitattributes聲明'*'(所有文件)的custom merge driver

echo * merge=keepTheir > dirWithCopyMerge\.gitattributes 
git config merge.keepTheir.name "always keep theirduring merge" 
git config merge.keepTheir.driver "keepTheir.sh %O %A %B" 

keepTheir.sh是:

mv -f $3 $2 
exit 0 

我需要得到一個文件服務器的副本(也可能是合併的變化)。在顛覆,我會使用svn更新

簡單:使用git fetch(這不會觸發任何合併),然後git checkout

git checkout origin/master -- path/to/file 

(請參閱 「git: how to update (checkout) a single file from remote origin master」)

+0

謝謝VonC。當然這並不容易。這個工具不容易...... – jww

+0

@jww通常,'git merge --abort'足以阻止合併。 – VonC

+1

當我執行'git pull'時,它會自動啓動這個過程。我從來沒有做過'混帳合併'。我從來沒有***發過命令。 – jww

0

添加給你的.git/config

[merge "keepTheir"] 
    name = always keep their during merge 
    driver = cp -f %B %A 

,並添加到您的本

public/dist/app.min.css merge=keepTheir