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 stash
或git commit
他们;取决于你现在想要什么。使用git stash
,它将保存您最后的修改,您可以使用git stash apply
取回它们。以上是关于Git 仍在跟踪我已经删除的文件的主要内容,如果未能解决你的问题,请参考以下文章
明确删除 GIT 中 .DS_Store 文件的跟踪 [重复]