Я только что сделал
git merge --squash feature-branch
в ветки develop.
Проблема в том, что приведенная выше команда обновила голову, не создавая новую фиксацию. Мое намерение состояло в том, чтобы создать одну фиксацию для приложения к главе develop.
Итак, журнал для ветки develop до и после слияния точно такой же.
Есть ли способ вернуть назад develop к тому, что было до git merge?
Спасибо.
Решение
Основываясь на комментарии от Dan D. и принятого ниже ответа, я смог решить мою проблему. Ниже показано, что я сделал, если вы находитесь в одной лодке:
1 - я запустил git reflog и в нем перечислены все фиксации и проверки, которые я сделал с ветвью develop.
2 - Вместо того, чтобы предлагать git reset [email protected]{1}, как было предложено, я нашел номер, когда я сделал последнюю фиксацию для разработки, которую я хотел сохранить. В моем случае это было [email protected]{188}. Поэтому я набрал git reset [email protected]{188}.
3 - Я запустил git log, и у него был чистый журнал, показывающий только те коммиты, которые у меня были до того, как я сделал неправильное слияние.
4 - Я запустил git add -A ., чтобы сгенерировать все новые файлы, созданные во время разработки моей функции.
5 - Я побежал git commit -m "install feature-x"
6 - В результате теперь у меня есть ветвь develop с правильными файлами, и журнал чист - показывается только одна фиксация для всех изменений, которые я сделал во время разработки feature-x.
Мне все еще нужно выяснить, почему мой оригинальный git merge --squash feature-branch не работал должным образом.
Решение 2
Ответ Марка Лонгэра - это окончательное решение моей проблемы. Я только что протестировал его, и он работает. Ниже приведен процесс, который я использую сейчас, чтобы вырезать все внутренние коммиты в feature-branch и включить только одну фиксацию в ветвь develop:
git checkout develop
git merge --squash feature-branch
git commit -m "install of feature-branch"
Вышеуказанная последовательность работает как шарм.