2017-04-19 81 views
0

我有一個特定的情況,我沒有找到與它匹配的堆棧的答案。
我有一個root_project這是基本的應用程序目錄,與它的遠程回購同步。如何從其他回購添加git子模塊並將其與本地文件夾合併

現在我有一個文件夾,它名爲oscar。之前我已經下載了壓縮文件oscar,並將其複製到我的root_project中,之後我在需要的地方對其進行了定製。
之後,我已經注意到,如果我需要從遠程oscar獲得更新,那麼我會陷入困境。

基本的想法是使用git submodule,但真的無法弄清楚如何適應我的需要,因爲我不想讓我的項目和回購實驗崩潰。

而且具體的是,我只需要src/oscaroscar回購,實際上是我root_project,並有可能與我的本地文件夾oscar變化進行合併,而不失去我已經在本地完成的事情。

我希望得到任何幫助和建議,就如何在當前形勢下正確使用git submodule,也可能的話希望看到在實現預期的效果

回答

1

[...]因爲我不」的步驟我必須這樣做不想讓我的項目和實驗回購崩潰。

首先,你不應該害怕在你的本地倉庫中嘗試一些東西。只要你留在你的本地副本上,做而不是發佈實驗性更​​改,你總是可以刪除整個東西,然後再從遠程克隆它。如果你只是嘗試一些東西,尤其是當你打破一切正在進行時,這是學習東西的好方法。不要猶豫,這樣做!

要回答你的問題:我假設oscar作爲遠程存儲庫存在。 Git子模塊確實是管理需要偶爾更新的子庫的好方法。你可以找到關於如何使用子模塊here的很好的文檔。如果您通過git submodule add直接從遠程克隆oscar,而不是首先下載和解壓zip文件,將會更容易。這個新克隆的子模塊當然不會包含您對oscar的本地更改,但您可以按照步驟described here輕鬆導入它們。

而且具體的是,我只需要SRC /奧斯卡奧斯卡回購,實際上是我root_project,並有可能與我的本地文件夾的奧斯卡更改合併,沒有失去我的事已經在本地完成。

我不明白這個部分。你只想添加oscar的子文件夾作爲子模塊嗎?

編輯:所以你希望你的子模塊只安慰oscar存儲庫的子文件夾。你可以用

git filter-branch --prune-empty --subdirectory-filter FOLDER-NAME BRANCH-NAME 

的過程描述here克隆整個倉庫(通過git submodule add)之後做到這一點,雖然只有5點是對你的興趣。請注意,您必須在子模塊內執行此操作,即必須將cd放入子模塊文件夾中。

+0

Thx的建議,是的,我只想要'src/oscar''文件夾,因爲奧斯卡還包括沙箱和其他東西 –

+0

正如你在這裏可以看到https://github.com/django-oscar/django -oscar oscar git repo提供了沙盒以及其他我不需要同步的東西。我需要將src/oscar與''root_project''中的同一文件夾合併。是否有可能按照你之前提到的方式做? –

+0

請參閱我的編輯以瞭解如何從克隆的子模塊中提取子文件夾的詳細信息。 – kowsky

相關問題