git 删除系统中不再存在的文件
git remove a file that no longer exists on the system
我以前从未遇到过这个问题,也不知道这怎么可能。我有一个非常大的目录,我错误地将其下载到我的 git 存储库中。我无意中做了一个 git add .
所以大目录被添加到工作树中,当我试图提交时,它不允许我这样做,因为文件太大了。
然后我没有做 git rm
并直接从文件系统中删除了文件。下次我尝试提交时,它不允许我提交,并且仍在抱怨该目录(现在文件系统中不再存在)太大了。
从文件系统中删除文件不会同时从 git 工作树中删除它吗?
如果有办法在不丢失更改的情况下撤消我最近的 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
我以前从未遇到过这个问题,也不知道这怎么可能。我有一个非常大的目录,我错误地将其下载到我的 git 存储库中。我无意中做了一个 git add .
所以大目录被添加到工作树中,当我试图提交时,它不允许我这样做,因为文件太大了。
然后我没有做 git rm
并直接从文件系统中删除了文件。下次我尝试提交时,它不允许我提交,并且仍在抱怨该目录(现在文件系统中不再存在)太大了。
从文件系统中删除文件不会同时从 git 工作树中删除它吗?
如果有办法在不丢失更改的情况下撤消我最近的 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