Отменить git commit + git branch <branchname>- с поворотом - PullRequest
2 голосов
/ 09 июля 2011

Я нахожусь в процессе «документирования задним числом» истории разработки приложения путем перемещения существующих снимков дерева каталогов проекта (которые были сохранены тогда в виде простых и примитивных копий папок, а не git или любых других контроль версий) в git.

После борьбы с изучением новых концепций git и новой терминологии, этот процесс миграции, казалось, шел хорошо, когда я внезапно обнаружил: «Упс ... мой последний git commit + git branch <branchname> пропустил один снимок. «

Поскольку порядок создания снимков важен для меня, я бы хотел полностью отменить последние git commit + git branch <branchname>, , как если бы они никогда не выполнялись .

То есть «исправление путем изменения коммита», как это определено внизу главы Отмена в Git в книге Git.

Все по-прежнему локально (я не «публиковал» и ничего не «толкал»), поэтому я считаю, что это соответствует предупреждениям о «переписывании истории». :)

Не могли бы вы подтвердить или исправить следующие шаги, необходимые для моего понимания?

  1. Очистить рабочий каталог (без удаление подкаталога .git, из Конечно)
  2. git checkout <folder-name> (возвращение рабочего каталога в состояние было сразу после Я совершил не ту папку и отметил это через ветку git)
  3. git branch -D <branchname-of-mistaken-folder-commit>
  4. git commit --amend

В этот момент я ожидаю, что git больше не будет помнить, что последняя ветка и фиксация когда-либо были выполнены , а рабочий каталог содержит ошибочную папку (которую я буду удалять, полностью заменив на один я пропустил). Это правильно?

1 Ответ

1 голос
/ 09 июля 2011

Чтобы просто удалить сделанный вами коммит, предполагая, что вы находитесь в ветке master, все что вам нужно сделать, это:

  1. git branch -D <name of the branch> для удаления ветки
  2. git reset --hard HEAD^ для сброса текущей ветви к предыдущему коммиту и рабочего каталога с ним

После этого вы можете нормально зафиксировать забытый каталог, а затем тот, который вы сбросили.

...