Как использовать cherry-pick из одной ветки Git в другую? - PullRequest
0 голосов
/ 03 июля 2018

Я пытаюсь выбрать коммит из одной ветви в другую. Рассмотрим следующий сценарий.

Ветвь A -> commit1 -> сообщение коммита "12345 Hello World"

Я хочу добавить новое сообщение в начале сообщения фиксации при выполнении cherry-pick. Так что после вишневого пика это должно выглядеть так:

Ветвь B -> commit2 -> сообщение о фиксации "98765 ........"

Здесь 98765 - это дополнительное сообщение, которое я хочу добавить. Из документации Git я нашел команду "git cherry-pick --edit", но я не нашел ни одного примера, чтобы понять, как его правильно использовать.

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Из комментариев вы хотите, чтобы редактирование происходило автоматически, а не для того, чтобы git представлял вам сообщение о коммите в окне редактора.

Для этого напишите скрипт, который редактирует сообщение требуемым способом. Ваш скрипт получит имя файла в качестве первого аргумента командной строки, и он должен обновить этот файл на месте. Например, вы можете использовать Perl-скрипт, похожий на:

open my $fh, '+<', $ARGV[0] or die;

local $/ = undef;
my $a = <$fh>;

seek $fh,0,0;
print $fh "new content $a";

close $fh;

Тогда вы бы указали этот скрипт как редактор, который будет использоваться вашим cherry-pick cmmand

git -c core.editor="perl /path/to/your/script.pl" cherry-pick --edit <commit>
0 голосов
/ 04 июля 2018

Спасибо всем за быстрый ответ. Я нашел следующий способ, который помогает моему делу. Это будет сделано в два этапа.

  1. Cherry-pick без фиксации цели с помощью -n.

    git cherry-pick -n <hash>
    
  2. Затем выполните действие коммита.

    git commit -m <message>
    
0 голосов
/ 03 июля 2018

Не так много, чтобы объяснить о git cherry-pick --edit. Если вы выбираете вишню с опцией --edit, Git откроет окно редактора сообщения коммита, прежде чем сделать коммит. Там вы можете настроить сообщение коммита как хотите.

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

...