聲明,我懷疑我在你前面只有幾天性學習的有關子樹:-)
如果你只是使用git subtree push
你不給子樹足夠的信息來提取和推動你的改變。
如果您正確地克隆了回購,子樹已經在那裏。需要知道子樹需要從哪個子樹中推出(即使只有一個子樹),並且還需要知道應該推到哪裏 - 具體而言,您不希望推向頂層回購。因此,你想要的東西是這樣的:
git subtree push --prefix=lib [email protected]:arges-github/lib.git master
顯然repo和refspec應該改變,以符合你的回購。
如果你想看看這裏發生了什麼(它確實有幫助),子樹實際上會將影響子樹內文件的更改分解到不同的分支,然後將其推送到子樹回購。看到這樣的情況,使用subtree split
git subtree split --rejoin --branch=shared-changes --prefix=lib
然後看看你所做的分支:
git checkout lib-changes
和手動把他們
git push [email protected]:arges-github/lib.git master
如果不是那麼可能是因爲您沒有將子樹合併到您的回購庫中。當您添加子樹時:
git subtree add --squash --prefix lib [email protected]:arges-github/lib.git master
您還需要合併子樹並將其推回到您的頂級回購。
git subtree pull --squash --prefix lib [email protected]:arges-github/lib.git master
git push
您是如何將子樹添加到頂級項目的?你只是建立一個目錄並克隆進它? –
嗨!我使用「git subtree add」將子樹添加到我的頂級項目中。也許我的問題還不夠清楚:如果我在其他機器上克隆回購,那麼我將所有項目文件加上子樹「lib」。現在我在克隆的repo中的子樹「lib」中更改了一些內容,我無法使用「git subtree push」將更改推回到遠程服務器,這是我的問題。 – arge
答案有幫助嗎? –