Перебазировать один коммит в HEAD
Я хотел бы переименовать данный коммит в HEAD моей текущей ветки. Конечно я могу использовать git rebase -i <future-head-SHA>~
и затем переместите его вниз в HEAD (как описано в этом вопросе), но я хочу автоматизировать этот процесс.
Есть ли аккуратный способ сделать это?
Спасибо
2 ответа
Решение
На самом деле, нет. Интерактивная перебазировка - единственный инструмент, предназначенный для подобных вещей. Вы могли бы, гипотетически, написать это, хотя:
- Напишите скрипт, который читает список
rebase -i
инструкции из файла передаются в качестве первого аргумента - файла, который вы обычно можете редактировать самостоятельно в редакторе, - и записывает переупорядоченный список обратно в этот файл. - Скажите Git использовать этот скрипт в качестве редактора при запуске интерактивной перебазировки, чтобы он переписывал инструкции по перебазировке, а не позволял редактировать их вручную.
Следующее должно работать, если у вас установлен GNU sed (другие выпуски sed обычно не поддерживают -i
флаг):
GIT_EDITOR="sed -i -e '1 {h; d}; $ {p; g}'" git rebase -i <commit>~