Повторная история фиксации в GIT Без Rebase

Поскольку я задал свой последний вопрос который оказался для перезагрузки с помощью GIT, я решил, что не хочу вообще переустанавливать. Вместо этого я хочу:

  • Отделение
  • Работы по работе, проверка и толкание в любое время
  • Выбросьте все эти коммиты и притворитесь, что они никогда не были (так что одна чистая фиксация в конце работы)

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

Это просто плохо и почему? Более важно: есть ли способ / GIT сделать это? git rebase -i заставляет меня сливаться (и выбирать, и сквош).

Ответ 1

Вы также можете использовать git merge с опцией --squash.

Ответ 2

Самый простой способ - мягкий reset.

Итак, проверьте свою ветку темы:

git checkout -b topic master

работа, работа, работа.

git commit
git commit
git commit
git commit

Счастлив с этим, вы можете сделать новый одиночный фиксат поверх мастера

git reset --soft master
git commit

Теперь объединитесь с мастером (это будет перемотка вперед) и уберите ветку темы. (Обратите внимание: вам не нужно это делать, если вы готовы запомнить или пометить, где находится мастер, и просто работать с мастером без ветвления, вы могли бы просто сделать git reset --soft old-master и git commit, и вам не понадобились бы эти последние шаги по очистке.)

git checkout master
git merge topic
git branch -d topic