2009-11-02 84 views
58

我在我的Git存儲庫中有一個文件夾,我想將它移出到它自己的存儲庫中。是否可以將文件夾的歷史記錄與文件夾一起移動?用歷史記錄導出Git中的子樹

我以前一直只在子文件夾上做git rm -r --cached subfolder/,然後是git init。但是,歷史不會導入到新的存儲庫中。

+2

類似,或重複:http://stackoverflow.com/questions/811251/how-can-i-move-a-single-directory-from-a-git-repository-toa-a- new-repository-whil – 2011-11-01 23:21:00

+0

可能的重複[如何將單個目錄從git存儲庫移動到新的存儲庫,同時保留歷史記錄?](http://stackoverflow.com/questions/811251/how-cani-i-從git-repository-to-a-new-repository-whil移動單個目錄) – user 2017-05-04 19:00:22

回答

84

報價從git-filter-branch(1)

一個例子來重寫版本庫看起來好像foodir /一直是其項目的根,並放棄所有其他的歷史:

git filter-branch --subdirectory-filter foodir -- --all 

因此你可以,例如,將庫子目錄變成它自己的存儲庫。請注意 - 將過濾器分支選項與修訂選項分開,並且 - 將所有分支和標籤重寫。

+42

只需確保在原始存儲庫的克隆上運行此操作,因爲它會擦除其餘的回購。 – bobDevil 2009-11-02 18:30:05

+0

令人驚歎!沒有一個工作的例子,我無法理解這個選擇。謝謝! – matpie 2009-11-02 19:19:18

+0

另外,感謝@ bobDevil的領導。我將所有更改都推送到遠程/在嘗試之前,因此如果它刪除了我的回購,我會安然無恙;但它肯定會是意想不到的。 – matpie 2009-11-02 19:21:10