基于任意文件路径拆分Git存储库

时间:2011-09-20 02:30:57

标签: git github

我有一个git存储库,我想将其转换为两个git存储库,但是拆分并不像git filter-branch --subdirectory-filter所希望的那么简单。

myRepo/
    a-main.js
    b-main.js
    a-other.js
    tests/
        a-tests.js
        b-tests.js

我想做的是获取另一个只有a-*个文件的存储库。 请注意,为了清楚起见,我只是这样命名它们,实际文件没有共同的模式。只有少数,所以单独列出它们没有问题。

我尝试了什么:

git clone --no-hardlinks ~/myRepo ~/myRepoA
cd ~/myRepoA
git filter-branch --tree-filter "rm b-main.js tests/b-tests.js" \
                  --prune-empty HEAD

但是这给出了这个输出

Rewrite 4ce7... (1/46)rm: cannot remove `b-main.js': No such file or directory
rm: cannot remove `tests/b-tests.js': No such file or directory
tree filter failed: rm b-main.js tests/b-tests.js

奖励积分:

完成此操作后,如何将其推送到Github上的新存储库?

1 个答案:

答案 0 :(得分:2)

原来我错过了-f标志:

$ git filter-branch --tree-filter "rm -f b-main.js tests/b-tests.js" \
                  --prune-empty HEAD

对于我自己的奖励积分:

$ git remote rm origin
$ git remote add origin git@github.com:username/reponame.git