Предположим, у меня есть несколько фиксаций:мерзавец перебазироваться сквош занимают второе сообщение (например, адресной привязкой)
<sha1> bug due to function1
<sha2> bug due to function2
... other commits
и я хотел бы, чтобы раздавить совершает 1 и 2 вместе, оставив только сообщение о второго совершить, то Я хотел бы использовать git rebase -i
, редактировать в:
pick <sha1> bug due to function1
squash <sha2> bug due to function2
... other commits
и всегда нужно будет редактировать объединенные сообщения и удалить первый.
Я знаю, что я мог бы изменить совершающее и использовать fixup
вроде этого:
pick <sha2> bug due to function2
fixup <sha1> bug due to function1
pick <sha3> other commit
, но тогда у меня есть риск того, что изменение порядка двух фиксаций, могут быть некоторые конфликты.
Как я мог достичь такого же результата при меньших манипуляциях, особенно избегая редактирования комбинированного сообщения. Обратите внимание, что может быть много коммитов до фиксации 1 и после фиксации 2.
несколько проблем с этим: коммиты уже находятся в ветке, над которой я работаю; так что это не сработает PLUS Мне нужно заглянуть в историю, чтобы получить два ша ... гораздо больше работы, чем git rebase -i и т. д. Я хочу, чтобы решение было меньше работы ... –
вы " d, очевидно, необходимо выполнить 'git reset --hard', где sha0 - это хэш перед двумя, которые вы хотите раздавить, прежде чем приступать к выбору вишни. Это точно ответит на ваш вопрос. Если вы запрашиваете способ сделать это только в интерактивном режиме, тогда это должно быть отражено в вопросе. –
mkrufky
согласился, что это решение будет работать, если это два последних коммита в дереве. Я адаптировал свой вопрос, чтобы было более ясно, что я хотел бы получить решение, если бы эти коммиты могли быть где-то еще в моей истории. Примените свой ответ так, чтобы он упоминал «решение только в том случае, если это последние две коммиты» или что-то в этом роде; который является частичным решением ... –