Восстановление истории коммитов в GIT без перебазирования
После того, как я задал свой последний вопрос, который, как оказалось, касался перебазирования с помощью GIT, я решил, что вообще не хочу перебазировать. Вместо этого я хочу:
- Ветка
- Работа работа работа, регистрация и подталкивание в любое время
- Выбросьте все эти коммиты и сделайте вид, что их никогда не было (поэтому один чистый коммит в конце работы)
Я делаю это в настоящее время, копируя файлы в новый каталог, а затем копируя их обратно в новую ветвь (разветвленную в той же точке, что и моя рабочая ветвь), а затем объединяя ее в master
или где угодно.
Это просто плохо и почему? Более важно: есть ли лучший способ /GIT сделать это? git rebase -i
заставляет меня сливаться (и подбирать, и тыкать).
2 ответа
Самое простое, что нужно сделать - это программный сброс.
Так что проверьте вашу ветку темы:
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