Git удалить файл, который больше не существует в системе
Я никогда раньше не сталкивался с этой проблемой и понятия не имею, как это возможно. У меня был действительно большой каталог, который я по ошибке загрузил в мое git-репо. Я случайно сделал git add .
поэтому большой каталог был добавлен в рабочее дерево, и когда я попытался зафиксировать, он не позволил мне, так как файл был слишком большим. Тогда я не сделал git rm
и непосредственно удалил файл из файловой системы. В следующий раз, когда я попытался сделать коммит, он не позволил мне и все еще жалуется, что каталог (который больше не присутствует в файловой системе) слишком велик.
Разве удаление файла из файловой системы также не удаляет его из рабочего дерева git?
Если есть способ отменить мои последние 2 коммита без потери изменений, а затем повторно перенести его на удаленный, это было бы здорово.
1 ответ
Вам нужно удалить его из индекса перед фиксацией:
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