2011-12-01 93 views
1

我知道有一個大的線程Detach subdirectory into separate Git repository但總是有一些變化。我的任務與上述問題不同的是,有一些文件而不是子目錄。分離一些文件到一個單獨的Git倉庫

Ex。

XYZ/ 
    .git/ 
    XY1/ 
    ABC/foo.py 
    ABC/bar.py 
    ABC/asdf.py 
    ABC/... 

而且我想提取foo.pybar.py到一個單獨的Git倉庫。

我的第一次試驗是讓這些2個文件的子目錄,並利用在1一方法:

$ mkdir foobar 
$ git mv ABC/foo.py ABC/bar.py foobar 
$ git commit -m '...' 
$ git filter-branch --subdirectory-filter foobar HEAD 

到目前爲止好,除了提交歷史將丟失。任何想法?

回答

0

您必須使用the subtree merge strategy將「遠程」文件夾「ABC」合併到本地文件夾「ABC」並保留歷史記錄。然後你將使用filter-branch刪除不需要的文件。

0

我做了什麼做到這一點是:

  1. git clone ABC/ DEF/; cd DEF
  2. git remote rm origin
  3. git filter-branch --prune-empty --tree-filter 'rm -fr <list of files/folders to remove>' -- --all
  4. git filter-branch -f --prune-empty --subdirectory-filter DEF -- --all

,就是這樣。增加了新的項目遠程,並繼續在單獨的存儲庫中工作。

相關問題