Восстановление истории коммитов в GIT без перебазирования

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

  1. Ветка
  2. Работа работа работа, регистрация и подталкивание в любое время
  3. Выбросьте все эти коммиты и сделайте вид, что их никогда не было (поэтому один чистый коммит в конце работы)

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

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

2 ответа

Решение

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

Самое простое, что нужно сделать - это программный сброс.

Так что проверьте вашу ветку темы:

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
Другие вопросы по тегам