2015-05-25 1 views
1

Я никогда раньше не сталкивался с этой проблемой и понятия не имею, как это возможно. У меня был действительно большой каталог, который я загрузил по ошибке в мой git-репо. Я непреднамеренно сделал git add ., поэтому большой каталог был добавлен к рабочему дереву, и когда я попытался зафиксировать его, это не позволило мне, поскольку файл был слишком большим. Тогда я не делал git rm и сразу удалял файл из файловой системы. В следующий раз, когда я попытался зафиксировать, это не позволило мне и все еще жалуется, что каталог (который теперь больше не присутствует в файловой системе) слишком велик.git удалить файл, который больше не существует в системе

Не удаляет файл из файловой системы и удаляет его из рабочего дерева 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 
+0

Как найти список файлов, кэшированных? Мне нужно знать точное имя каталога. Который я не сейчас. – anonuser0428

+1

Вы можете использовать 'git ls-files --cached' – hek2mgl

+0

Он не указан в кеш-файлах. Я попытался снова нажать свою фиксацию, но когда я это сделал, я получил следующую ошибку: 'remote: error: File Path_to_dir/dir_name/filename - 200.96 MB; это превышает предел размера файла GitHub 100.00 MB' – anonuser0428