我在github上。我设置了一个.gitignore文件,在该文件中,我指定的文件不会被添加到将来的提交中,因为我正在尝试减轻克隆。现在我需要删除所有这些.class文件,例如从所有以前的提交中只分享必要的来源,否则无论我的努力,它总是会增加或减少50mb。我看了http://cheat.errtheblog.com/s/git 我想我可能需要这些命令的组合,但我真的不想做我的工作。 感谢
答案 0 :(得分:11)
git-filter-branch docs中有一个与您的用例匹配的示例。
git clone project project.tmp
cd project.tmp
git filter-branch --prune-empty --index-filter 'git rm --cached --ignore-unmatch *.class' HEAD
cd ..
git clone project.tmp project.clean
rm -rf project.tmp
cd project.clean
然后 project.clean
应该准备好向上游推进。
PS。如果你对这个操作可能会如何感到紧张,那么试验一个克隆和github测试分支就不会有任何痛苦。
答案 1 :(得分:0)
在尝试此操作之前,切换到测试分支当然是个好主意:
git branch测试; git checkout testing
我所做的只是找到提交文件树中的所有类文件,然后从git中删除它们:
git ls-files |grep *.class
中的文件;做echo $ file;完成;
这只是检查我的for循环是否会在rm git ls-files |grep *.class
中的文件;做git rm --cached $ file;完成的; 然后你将它提交给你的git repo并把它放到你的.gitignore中:
syntax: regexp
*.class
完成此操作后,您可以选择将其合并到主分支中,然后按或在主分支上重复相同的操作。