2013-10-07 34 views
1

我有兩個分支,master和upstream,有數以千計的文件要合併,並有相同數量的合併衝突。Git合併 - 他們的所有文件除了已被<name>,<name>或<name>編輯的文件,在這種情況下,我會自己修復合併衝突嗎?

事情是,上游(「他們」)文件的90%是我想保留的文件。除了「git mergetool」之外,有沒有辦法自動使用所有的上游文件,除非文件已被特定人員編輯?這樣,我就可以自己手動解決合併衝突,只有十幾個文件。

下面是僞代碼可以工作,在我的腦海:

git checkout master 
git merge upstream --squash --all-of-theirs-except [email protected] [email protected] 
git mergetool //For the remaining conflicts 
git push origin master 

回答

0

你做git mergetool之前,可以從上游籤的文件。然後,您可以使用git mergetool來解決其餘文件的衝突。

git merge upstream squash 
git checkout upstream -- <files that you want as "theirs"> 
git mergetool //Resolve the remaining conflicts. 

要獲取的文件列表,你可以使用git log --author=<email> --name-only --oneline和解析輸出拿到名單。或者,您可以執行git checkout -- path/to/a/directory/來檢出特定目錄中的所有文件,而無需單獨指定所有文件。

+0

我喜歡這個想法,但仍然有幾千個文件需要經過。我可以爲某些文件夾使用通配符並使其遞歸? – GregariousJB

相關問題