Перебазировать один коммит в 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>~

git rebase commit-id

Эта команда сделает всю работу за вас.

Другие вопросы по тегам