Подтвердить что ты не робот

Git: как повторно использовать/сохранять сообщения фиксации после 'git reset'?

Как Git пользователь, я регулярно сталкиваюсь с ситуацией, что мне нужно переработать одну или несколько коммитов таким образом, чтобы они не вписывались в --amend или rebase -i с фиксацией fixup. Обычно я бы сделал что-то вроде

git reset HEAD~1
# hack, fix, hack
git commit -a
# argh .. do I need to retype my message?

Я воспринимаю разумные составленные сообщения фиксации довольно серьезно. Обычно они содержат больший текст со ссылками и обоснованиями для изменения. До сих пор меня очень раздражало длительный процесс восстановления моего старого сообщения фиксации с помощью несортированного git reflog, git log и копирования и вставки.

Можно ли лучше справиться с этим? И как бы это произошло, если в моем случае содержится более одного коммита?

Редактирование: немного подумав об этом, я думаю, что я ищу что-то вроде Git типа stash-like для фиксации сообщений, где исправления/исправления не подходят.

4b9b3361

Ответ 1

После git reset этот однострочный пользователь может это сделать:

git commit [email protected]{1}

или даже короче:

git commit -C [email protected]{1}

Вы можете использовать другие параметры, указанные @user2718704.

Ответ 2

При выполнении команды "git commit" вы должны проверить следующие параметры,

Для повторного использования

--reuse-message=<commit>

Чтобы изменить повторное использование,

--reedit-message=<commit>

Чтобы изменить автора,

--reset-author

Ответ 3

Почему reset, если вы можете взломать, исправить, взломать и просто запустить git commit --amend --no-edit; таким образом, сохраняя исходное сообщение фиксации.

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

Ответ 4

Вы можете рассмотреть git commit --reset-author -c <commit>, чтобы повторно использовать сообщение фиксации с редактированием и текущее время.