从git下的存储库中删除文件


Remove file from repository under git

我想从Git存储库中删除几个文件。我的存储库有几个分支,我执行以下操作:

1
2
3
git rm --cached filename
git commit -am"deleted filename"
git checkout anotherbranch

我得到:

1
2
3
4
5
6
error: The following untracked working tree files would be overwritten
by checkout:
    output/filename

Please move or remove them before you can switch branches.
Aborting

那么问题是如何从repo中删除文件(意外添加)?我不想通过git跟踪文件名,我计划将此文件名添加到.gitignore。

顺祝商祺!

彼得


我通常会删除这些文件(而不是通过git命令)。然后删除所有文件后,我会:

git add . -A

git commit -a -m"remove files"


在我看来,我认为最好的办法是修改你的承诺:

1
git commit --amend

但是,如果您的提交已经被推送到远程存储库中,我建议您创建另一个提交并删除这些文件。我认为这是解决这个问题最简单的方法。


要从repo中永久删除文件,必须传递-f选项:

git rm -f filename

在这里讨论了切换分支时未跟踪文件的问题:签出将覆盖以下未跟踪的工作树文件


当你这样做的时候

1
git rm --cached

您从Git中删除文件,但它们仍保留在磁盘上,因此提交此更改后,您的文件仍保留在磁盘上,但不在Git中。因此,Git将它们识别为未跟踪的文件。

您希望切换到仍有这些文件的分支,如果签出到此分支会影响本地更改(未跟踪的文件或修改的文件),Git将不允许您切换到其他分支。