Есть ли способ не интерактивно перебазировать и раздавить все в моей ветви функций? - PullRequest
1 голос
/ 22 марта 2019

Иногда у меня есть несколько небольших коммитов в ветви функций, и я хотел бы просто сжать их все вместе, но пока не сливаться с родительской ветвью.

Я знаю, что могу (в этом примере родительская ветвь master):

git rebase -i master

, а затем пометить все коммиты после первого как "squash".

Есть ли способ получить тот же результат не в интерактивном режиме?

По сути, я хочу создать новый коммит, дерево которого идентично дереву, которое находится сейчас во главе моей функциональной ветви, и чей родитель является коммитом предка, который я указал (например: master), а затем изменить ветвь функции, чтобы указать на этот новый коммит. Не должно быть никаких конфликтов (иногда я получаю некоторые с rebase -i), а с -m должен быть полностью неинтерактивным. В идеале, без -m сообщение коммита должно по умолчанию объединять коммиты, подавляемые.

Как я могу это сделать?

1 Ответ

4 голосов
/ 22 марта 2019

Мой подход к сквошу - использовать git reset --soft. Скажем, вы хотите раздавить последние 5 коммитов:

git reset --soft HEAD~5
git commit -m "Feature X"

И если вы также хотите перебазировать все, что сделано за (почти) одиночный выстрел, вы все равно можете сделать это с помощью git reset --soft

Как раздавить / перебазировать за один выстрел

...