2014-04-11 29 views
1

我終於想出瞭如何使用Git從我的主存儲庫中創建一個子樹存儲庫。推送到拆分子樹存儲庫策略

還有一件事我還不確定。假設「Main」是保存我所有代碼的存儲庫,「Shared」是我從「Main」拆分的子文件夾。

當我在我的Main repo中對代碼進行更改並且更改了「共享」回購時,我該如何繼續?

如果我對「主」代碼和「共享」回購進行了更改,我可以先對「主」回購做一個commit嗎?

git commit -am "Made changes to main and shared" 

我應該再ALWAYSpush第一到 「共享」 回購?

git subtree push --prefix=path/to/code --squash shared master 

而在此之後,則只需按「主」回購:

git push 

我就應該總是提交併推送這樣從現在開始?或者這可能是錯誤的方法?

回答

1

總是,因爲你可能想保留一些子樹修改只在您的Main回購的背景下,在這種情況下,一個簡單的承諾+推說Main回購協議就夠了(你不必回來貢獻在那種情況下到子樹上游回購)。

這不同於子模塊,其中需要提交任何修改的子模塊,然後你需要去回父回購,並再次承諾(以記錄子模塊的新的SHA1)。
在這種情況下(子模塊),是的,建議先推送子模塊(到其上游回購),然後推送父回購:克隆父回購的任何人都希望從子模塊上游回購(和如果你沒有推子模塊...那個SHA1將不可用)。

在一個子樹中,主回購包含所有內容,所以推回主回購就足夠了。
只有當您想要將修改反映在上游回購庫中時,纔會推送到子樹的上游回購庫。

+0

所以如果我理解正確。你是說一次推入Main下游回購將會更新Main和Shared回購(上游)? – Vivendi

+0

@Vivendi不僅Main,而且Main包含數據方面的所有內容。只有當您希望您的更改也反映在共享上游回購中時,您才需要更新共享。 – VonC

+0

感謝您的理解。 – Vivendi