Вы можете сделать это довольно легко без git rebase
или git merge --squash
.В этом примере ниже я раздавил последние 2 коммита.
Если вы хотите написать новое сообщение о коммите с нуля, этого достаточно:
git reset --soft HEAD~2 &&
git commit
Если вы хотите начать редактирование новогосообщение коммита с конкатенацией существующих сообщений коммита (т. е. аналогично тому, с чего начнёт список команд pick / squash / squash /… / squash git rebase -i
), затем вам нужно извлечь эти сообщения и передать их git commit
:
git reset --soft HEAD~2 &&
git commit --edit -m"$(git log --format=%B --reverse HEAD..HEAD@{1})"
Оба эти метода объединяют два последних коммита в один новый коммит одинаковым образом.Мягкий сброс просто перенаправляет HEAD на последний коммит, который вы не хотите раздавливать.Программный сброс не затрагивает ни индекс, ни рабочее дерево, оставляя индекс в желаемом состоянии для вашего нового коммита (т. Е. Он уже содержит все изменения из коммитов, которые вы собираетесь «выбросить»).
В вашем случае, в зависимости от того, хотите ли вы просто оставить отзыв или загрузить для просмотра и зафиксировать, вы можете выбрать.