2009-10-11 67 views
2

我正在努力嘗試使用Git子樹策略。我的目的是在傘形回購下將一些不同的回購合併成一個玩具回購系列。我使用這裏詳述的子樹的策略:http://help.github.com/subtree-mergeGit Subtree。爲什麼我不能從一個子樹而不是根分支?

我拉我的頭髮試圖說服我想從這些子樹的一個從根本不是創建一個分支的Git。當我cd到子樹中時,創建分支,然後cd回到根目錄,從根目錄運行git分支,清楚地表明分支是在根目錄下創建的。嘆。

我非常喜歡git/github,但它讓這個看似常規的任務正常工作變得令人發狂。

有人請賜教嗎?

回答

5

git只在「整個」樹層次上工作,所以無論你在哪裏工作樹操作如branch,checkout <branch>,commit都工作在根級別。

子樹合併策略是一種合併策略,可幫助您在有一個存儲庫時,一個分支已將文件的子樹移動到存儲庫中的不同位置,另一側已更改原始位置中的這些文件。它旨在幫助合併這兩種操作,使正常合併策略產生更多衝突或將文件保留在錯誤位置。子樹合併策略對git的「整個樹」操作的方式沒有影響,所以如果你想讓一個分支只是一個存儲庫的一個子樹,你需要分支,然後做一個新的提交其他子樹被移除並且感興趣的樹移動到根級。

但是,鑑於您的使用模式,我建議您長時間閱讀子模塊。它可能會提供適合您嘗試實現的功能。

+0

Charles,我嘗試了子模塊路線。存在的問題是子模塊只是對外部回購的參考。正是我想要避免的。我希望repo存在於父代中,並且* NOT *指向其他任何東西。 – dugla 2009-10-11 20:31:42

+0

子樹合併策略通常用於在單獨開發的項目中進行合併,現在是大型項目的一部分(當然,來自此類(子)項目的文件應該轉到超級項目的子目錄,而不是超級項目的頂級目錄)。 – 2009-10-14 19:15:49

+0

我不得不承認在玩具例子中只使用了子樹合併,所以感謝一些「真實」的世界洞察力。 – 2009-10-14 20:41:08

3

我推薦apenwarr的git-subtree:http://github.com/apenwarr/git-subtree。希望它在某個時候被添加到git本身。

+0

哇。這看起來像我一直在尋找的東西。感謝這個布萊恩。 – dugla 2010-04-20 22:36:01

相關問題