2009-11-14 80 views
1

我明白如何在git中合併分支,我喜歡它的容易程度。git:將一個分支的源代碼樹的一部分合併到另一個分支中,而不管個別提交

我有一個分支,看起來像這樣:

project/ 
|--subproj1/ 
| |---(files) 
| 
|--subproj2/ 
    |---(files) 

一位同事有生來就能兩個子項目中顯著變化的一個分支。更具體地說,他改變了它們,以取決於新的子程序3中的普通代碼。然而,由於各種原因,我們不會在可預見的未來隨時推動分支。

我的分支僅在subproj1中與主控發散,我正在進行子項目特定的增強。我的子項目不如其他項目重要,因此對我們可以對其進行哪些類型的更改限制較少。我想在我的同事的subproj1更改(以及這些更改所依賴的新的subproj3)中進行合併,但只保留現有的subproj2。在將來的某個時候,當他將他的項目整體合併爲主人時,我希望他的subproj2更改能夠正常合併。

我該怎麼用git來做到這一點?

回答

2

每個提交是一個邏輯工作單元。不幸的是,這意味着如果你將同事編輯在同一分支上,你不能將你的同事對subproj1和subproj2的編輯分開。

但是,要做到你的要求,你會用git filter-branch。您可以使用它來創建一個新的分支,該分支通過重播所有同事的提交而定義,但僅向每個提交添加對subproj1的更改。

的命令是沿着線的東西:

git fetch colleague-repo ... 
git filter-branch --subdirectory-filter subproj1 -- A..B 

(其中A..B是提交的,你從他的存儲庫中取出的範圍內),這樣做,你要創建一個獨特分支

與您的同事的工作完全分開的工作。如果你將這個新分支和你的同事的分支合併到master中,那麼對subproj1的更改歷史將永久地在兩個分支之間進行分割。

+0

甜,我會試試這個。謝謝! – 2009-11-14 06:57:31

相關問題