我想从存储库中删除文件。
git rm file_to_remove.txt
将从存储库中删除文件,但也将从本地文件系统中删除文件。如何从回购中删除此文件而不删除文件的本地副本?
我想从存储库中删除文件。
git rm file_to_remove.txt
将从存储库中删除文件,但也将从本地文件系统中删除文件。如何从回购中删除此文件而不删除文件的本地副本?
当前回答
上面的答案对我不起作用。我使用过滤器分支删除所有提交的文件。
使用以下命令从git存储库中删除文件:
git filter-branch --tree-filter 'rm file'
从git存储库中删除文件夹:
git filter-branch --tree-filter 'rm -rf directory'
这将从所有提交中删除目录或文件。
您可以使用以下命令指定提交:
git filter-branch --tree-filter 'rm -rf directory' HEAD
或范围:
git filter-branch --tree-filter 'rm -rf vendor/gems' t49dse..HEAD
要将所有内容推到远程,您可以执行以下操作:
git push origin master --force
其他回答
要从基于.gitignore的存储库中删除文件,而不从本地文件系统中删除文件:
git rm --cached `git ls-files -i -c -X .gitignore`
对于Windows Powershell:
git rm --cached $(git ls-files -i -c -X .gitignore)
要从repo中删除整个文件夹(如Resharper文件),请执行以下操作:
git rm -r --cached folderName
我提交了一些重新格式化的文件,不希望这些文件为其他项目用户保留。
此外,如果您提交了敏感数据(例如包含密码的文件),则应将其从存储库的历史记录中完全删除。这里有一个指导说明如何做到这一点:http://help.github.com/remove-sensitive-data/
如果您只想取消跟踪文件而不从本地和远程存储库中删除,请使用以下命令:
git update-index --assume-unchanged file_name_with_path
这取决于您从git中删除的意思。:)
您可以使用git-rm-cached来取消文件的分页。有关详细信息,请参阅。当您取消标记某个文件时,这意味着它不再被跟踪,但这不会从以前的提交中删除该文件。
如果您想做的不仅仅是取消对文件的分页,例如从以前的所有提交中删除敏感数据,那么您需要使用BFG Repo Cleaner等工具来过滤分支。