Git 仍在跟踪我已经删除的文件

Posted

技术标签:

【中文标题】Git 仍在跟踪我已经删除的文件【英文标题】:Git still tracking a file that I already deleted 【发布时间】:2020-05-10 02:12:20 【问题描述】:

我正在处理一个超过 git 允许的最大文件大小的大文本文件,因此它不允许我将本地提交推送到远程。我已经尝试创建一个 .gitignore 文件并将文件的路径添加到其中,但我仍然遇到同样的问题。

我也试过了:

git rm -r --cached .
git add .
git commit -m "message"
git push

还有:

git update-index --assume-unchanged <path/to/file>

我什至删除了文件然后重新提交并推送:

git add .
git commit -m "message"
git push

但 git 仍然认为我正在尝试推送大文本文件。我对如何从 git 取消跟踪文件感到困惑。

【问题讨论】:

【参考方案1】:

注意:git rm --cached 仅从索引中取消暂存,而不是从存储库中取消暂存。

文本文件已在您的存储库中的先前提交中注册。即使您尝试使用新的提交来修改您的存储库,旧的仍然存在。无论如何,Git 都会尝试推送它。

所以你需要编辑这个先前的提交并删除其中注册的文件。你必须重写提交的历史:git rebase -i specific-commit-id 将成为你的朋友。此时,您可以使用git rm --cached 删除此提交中的大文本文件。然后git commit更新。

【讨论】:

当我尝试使用 git rebase -i spefic-commit-id 修改最新提交时,我收到以下消息:错误:无法变基:您有未暂存的更改。错误:请提交或隐藏它们。我是否必须修改包含该特定文件的所有提交? 你应该git stashgit commit他们;取决于你现在想要什么。使用git stash,它将保存您最后的修改,您可以使用git stash apply 取回它们。

以上是关于Git 仍在跟踪我已经删除的文件的主要内容,如果未能解决你的问题,请参考以下文章

明确删除 GIT 中 .DS_Store 文件的跟踪 [重复]

从 git 跟踪中删除文件夹

在 VSCode 中保存文件会删除 git repo 中的所有跟踪文件

Git添加所有修改,删除和未跟踪的文件?

如何从 git 跟踪中删除文件? [复制]

如何从Git跟踪文件中删除Redis文件dump.rdb