如何从存储库中删除“file1.txt”?


当前回答

https://stackoverflow.com/a/2047477/14508423https://stackoverflow.com/a/19666677/14508423非常相似,两者都尝试了。没有什么Git一直在跟踪文件。(我使用vscode,因此文件立即标记为U(未跟踪)或A(已添加))

这样做https://stackoverflow.com/a/53431148/14508423整个类别解决了这个问题。

这样做可以从git中删除文件,并让git忘记它:

**manually add the file name to .gitignore**

git rm --cached settings.py    
git commit -m "remove settings.py"
git push origin master
git rm -r --cached .
git add .
git commit -m "Untrack files in .gitignore"

ps:每次失败时,我都试图删除包含敏感信息的文件,如令牌(.env和settings.py文件)。但它可以处理随机文件

其他回答

如果要从存储库中删除文件,但将其保留在文件系统中(将被取消跟踪):

bykov@gitserver:~/temp> git rm --cached file1.txt
bykov@gitserver:~/temp> git commit -m "remove file1.txt from the repo"

如果要从repo和文件系统中删除文件,则有两个选项:

如果文件在索引中没有暂存更改:bykov@gitserver:~/temp>git rm file1.textbykov@gitserver:~/temp>gitcommit-m“删除file1.txt”如果文件在索引中进行了更改:bykov@gitserver:~/temp>git rm-f file1.textbykov@gitserver:~/temp>gitcommit-m“删除file1.txt”

如果您的文件是敏感的(例如,您意外添加并提交的设置或密钥),那么您可以从所有版本中删除它。

要从所有版本中删除,请使用以下命令(警告:小心,因为如果没有副本,您将无法还原回购中删除的文件):

使用Git

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch file.ext' HEAD

使用gitfilter repo(在这里获取,git推荐的新方法)

git filter-repo --path file.ext

此外,如果是要删除的文件夹及其后续子文件夹或文件,请使用:

git rm -r foldername

我尝试了许多建议的选项,但似乎都不起作用(我不会列出各种问题)。我最终所做的(对我来说)简单而直观的工作是:

将整个本地回购转移到其他地方再次将回购从主机克隆到本地驱动器将文件/文件夹从#1中的原始副本复制回#2中的新克隆确保问题大文件不存在或排除在.gitignore文件中执行通常的gitadd/gitcommit/gitpush

删除特定文件

git-rm文件名

在一次快照中递归清理目录中所有未跟踪的文件

git-clean-fdx