2013-10-22 82 views
14

我正在尋找有選擇地合併零件與git文件。用git有選擇地合併文件的*部分*

我有兩個分支 - 稱它們爲主並改變 - 這是一個分開的;如果我把主人合併到變化中,它只會快進。

但是,我只是想在一個文件中包含多個部分 - 從更改爲主文件。

有沒有一個乾淨的方法來做到這一點 - 例如git在進行每個更改之前詢問?還是我堅持用手做? (世界還未結束,但我不喜歡,而且 - 是 - 這本來是可以避免對我來說更多的計劃 - 生活就是這樣。)

回答

11

試試這個:

git merge --no-ff --no-commit changed # Merge in 'changed' but don't commit 
git reset <path/to/your/file>   # Reset the stage state but not file 
git add -i <path/to/your/file>   # Start adding in interactive mode 

(Git will prompt you for each hunk; you can split hunks up if necessary.) 

git commit        # Finally commit the merge with only 
             # the bits you chose to stage. 

但是,請注意,這樣做會使Git認爲該文件已完全合併,因此如果有人要再次合併到同一分支中,則該提交的其他更改仍不會合並。或者可能不是你想要的。

如果您需要git add交互模式中各種選項的含義方面的幫助,請參閱git help add在「交互模式」部分的輸出。

+0

儘管我已將「add -p」更改爲「add -i」以用於交互模式,但它的工作原理與廣告相同。我希望git-merge直接支持與hunk的交互式工作。 – lnmaurer

+0

是的,太糟糕了,你不能在這裏使用mergetool。另外,是否有辦法一次執行多個文件,還是隻需要編寫一個循環來實現這一點? – Dan