git删除系统中不再存在的文件

时间:2015-05-25 21:31:44

标签: linux git git-commit git-add

我之前从未遇到过这个问题,也不知道这是怎么回事。我有一个非常大的目录,我误将其下载到我的git仓库中。我无意中做了git add .所以大目录被添加到工作树中,当我尝试提交时,它不允许我,因为文件太大了。 然后我没有做git rm并直接从文件系统中删除了该文件。下次我尝试提交时,它不允许我并且仍在抱怨目录(现在不再存在于文件系统中)太大了。

不从文件系统中删除文件也会将其从git工作树中删除吗?

如果有办法在不丢失更改的情况下撤消我的最后2次提交,然后将其重新推送到远程,那就太棒了。

1 个答案:

答案 0 :(得分:2)

您需要在提交之前将其从索引中删除:

git rm --cached FOLDER_NAME

由于您已将其从文件系统中删除,因此该文件夹现在应该已经消失。

如果您在最近的提交中添加了该文件夹,则只需发出:

git commit --amend
git push -f REMOTE BRANCH_NAME

如果你在倒数第二次提交中添加了文件夹,事情会变得更加困难。我建议先创建本地仓库的备份。

请按照以下步骤操作:

# Rebase the second most recent commits
# -i will open an editor
git rebase -i HEAD~2

在编辑器中,用最后一次提交的行中的pick替换edit并保存文件。您现在可以更改该提交。问题:

git rm FOLDER_NAME

# This will open an editor again. You can leave the
# commit message unchanged. Simply save the file
git commit --amend

# Finish the rebase action
git rebase --continue

现在你应该完成并从该提交中删除该文件夹。你可以使用

推送
git push REMOTE BRANCH_NAME