这是一个非常不寻常的用例,但我想从git repo中删除所有跟踪的文件。是的,跟踪的文件,而不是未跟踪的文件。
我有一大堆代码生成文件,其中一些是二进制文件文件。我希望能够跟踪文本生成文件的历史记录。我有忽略列表设置等。问题是,下次我运行生成过程时,它将更改所需的文件,添加新文件,但它不会删除不再生成的旧文件。删除整个工作树会有效,但它也会删除已存在的二进制文件和其他文件,我不想这样做。
如果我可以选择使用git来清理被跟踪的文件,那么最好使用已经准备好的复杂.gitignore文件来区分文件,但我在文档中没有看到任何内容。
如果从工作树中删除所有被跟踪的文件,是否存在棘手或无法选择。
答案 0 :(得分:1)
如果您想删除master
分支中版本控制下的每个文件,那么您可以尝试:
git ls-tree -r -z master --name-only | xargs -0 git rm
管道之前的命令的第一部分以递归方式查找master
中已版本化的所有文件,git rm
从远程存储库中删除每个文件。
git rm <file>
删除远程存储库跟踪的文件。
答案 1 :(得分:0)
您可以将空树与工作树更新合并:
git read-tree -m -u $(git mktree < /dev/null)