2011-08-10 26 views
6

我想將分支B的更改合併到我的分支A,合併排除對給定目錄的任何更改。這裏的問題是我有一些提交跨越多個目錄的改變,其中一個需要被排除。合併git分支,同時排除對某些目錄的更改

是否有這樣的可能,例如,有歷史重寫?

爲了澄清,我的目錄結構是:

root/x 
root/y 
root/z 

一些提交的影響所有三個目錄。現在,我想以這樣一種方式合併,即我的歷史記錄已更改爲yz,但不是x

回答

6

您可以合併其他分支而不提交它,然後重新設置該目錄的狀態:

git merge --no-commit <branch> 
git reset root/x 
git commit 

更好,但由@useless in his answer

+0

謝謝。最後一步是我想避免的。 Rebase看起來像是一件好事,但我有超過100次提交... –

+0

好吧,我的方法工作:)它創建了一個'邪惡的合併'雖然 – knittl

+0

在git中避免原子提交就像在淋浴中避免水。你可以自由地嘗試它,但這不是該如何使用的東西,而且你將更加努力地工作。 –

3

如果您的更改全部仍在本地,則最簡單的方法是將splitting your commits轉換爲真正正交的更改,您可以獨立合併。


死鏈接修復:嘗試this link代替(或只看到當地的聯機幫助頁git的變基),並搜索下來拆分提交

+0

提到如果我分裂提交分裂你的提交,我該怎麼辦將它們獨立合併?我的意思是,在合併時,所有提交到所選提交被合併。我不太確定這種方式。相反,'--no-commit'方式很明顯。 –