Я только что сделал
git merge --squash feature-branch
в моей ветке develop
.
Проблема в том, что указанная выше команда обновила заголовок без создания нового коммита.Мое намерение состояло в том, чтобы создать один единственный коммит для применения к заголовку develop
.
Короче говоря, журнал для ветви develop
до и после слияния точно такой же.
Есть ли способ вернуть обратно develop
к тому, что было до git merge
?
Спасибо.
Решение
Основываясь на комментарии Дэна Д. и принятом ответе ниже, я смог решить мою проблему.Ниже показано, что я сделал, если вы находитесь в одной лодке:
1 - я пробежал git reflog
, и в нем были перечислены все коммиты и проверки, которые я сделал с моей веткой develop
.
2 - Вместо того, чтобы делать git reset HEAD@{1}
, как предложено, я нашел число, когда я делал последний коммит для разработки, который я хотел сохранить.В моем случае это было HEAD@{188}
.Поэтому я набрал git reset HEAD@{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"
Вышеприведенная последовательность работает как шарм.