Отменить определенный локальный коммит перед нажатием - PullRequest
0 голосов
/ 03 июня 2018

Я случайно зафиксировал zip всего решения 4 коммитов назад.Я понял это после того, как попытался нажать, и git bash показал, что я загружаю что-то более 100 МБ.

До сих пор я пытался:

  • Локально удалить файл и зафиксировать это изменение (все равно остается огромное packfile, которое, похоже, по-прежнему вызывает проблемы при нажатии
  • Используется git revert -n c5d1516c (который является конкретным коммитом, включающим zip. Я подумал, что затем я добавлю .zip к gitignore, затем передам это и надеюсь, что файл 600mb pack разрешит сам себяно это тоже не работает)

Я пробовал несколько других подходов, но я не лучший в git, поэтому я теряю направление

ВотМоя история коммитов.Выделенный файл содержит zip-файл, который мне нужно удалить, а также удалить из истории мерзавцев.
enter image description here

Как отменить выделенный файл?сделать так, чтобы я мог игнорировать zip-файл и исправить проблему с файлом пакета?

Ответы [ 2 ]

0 голосов
/ 03 июня 2018

Вы уже приняли ответ, но похоже, что вы в основном «потеряли» 4 внесенные вами ревизии, и вы получили одну ревизию, говорящую «Это работа 4 других ревизий, которые я вырвал из-за неосторожности»,Намного лучшим решением, которое сохранит всю вашу историю, как это было бы при удалении zip-файла, было бы (при условии, что мы работаем над мастером):

git checkout master~4 # go back to where the zip was added
git rm --cached the-zip-file.zip # remove the zip file from revision
git commit --amend --no-edit # commit without zip file, leaving everything else as is
git cherry-pick master~4..master # replicate revisions created on top of busted revision
git branch -f master # move master to new revision
git checkout master

На этом этапе вы сохранили свою историю при удалении zip-файла.

0 голосов
/ 03 июня 2018

Следующее можно сделать безопасно, только если вы еще не нажали.

Вы можете сделать rebase -i и удалить коммит.Лично я не люблю перебазирование, потому что под капотом происходит много действий.И вы можете захотеть удалить только 1 файл из плохого коммита.

Так что, если вы в порядке с раздавлением ваши локальные изменения в 1 коммит, то это проще:

  1. git reset --soft [commit hash before zip]
  2. удалить почтовый файл
  3. Подтвердить все ваши локальные изменения
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...