2016-10-17 3 views
1

Задайте короткий, но очень конкретный вопрос. Я соединяю ветку с моим мастером с помощью опции -no-ff, и я также добавляю сообщение об объединении с использованием -m в той же команде (git merge --no-ff -m"message" feature1). У меня есть github setup, чтобы использовать vim в качестве моего редактора сообщений об объявлении по умолчанию, и через vim у меня есть мое тело фиксации, ограниченное 72 символами.Git merge - no-ff with -m option

Когда я пытаюсь выполнить слияние с сообщением, как описано выше, я теряю контроль над ограничением количества символов, разрешенных в теле. Есть ли способ использовать merge-no-ff и заставить его открывать vim для сообщения слияния или альтернативно использовать -m и принудительно использовать его для новой строки вручную, когда я знаю, что я набрал 72 символа.

Заранее спасибо.

+0

Возможно, у вашего 'vim' есть крючок, сконфигурированный для' COMMIT_EDITMSG', но сообщения об объединении коммитов переходят в 'MERGE_MSG' –

+1

Вы имеете в виду, если есть символ, который позволяет вам писать ваши комментарии более чем в одной строке, когда вы используете -m вариант? –

+0

Привет, Arkadiusz, я намеренно установил vim и git, чтобы ограничить мои сообщения фиксации до 72, но кажется, что ни один из этих параметров не будет использоваться, когда я использую параметр -m – user1649972

ответ

3

Флаг -m принимает предварительно отформатированное сообщение фиксации. Если вы хотите включить в него новые строки или другие пробелы, вы должны включить строки новой строки или другие формы пробелов.

Например, чтобы установить сообщение слияния для:

hello 

world 

вы можете использовать:

git merge --no-ff -m 'hello 

world' 

(при условии, типичные оболочек, таких как /bin/sh или /bin/bash, что позволяет внедренные новые строки в кавычках; этот метод не работает, например, в tcsh).

В общем случае, если у вас есть сложное сообщение, которое вы хотите поставить, вам, вероятно, лучше положить его в файл и использовать флаг -F, а не флаг -m. См. Также флаг -t, который принимает файл и флаг -e (или --edit), который заставляет использовать редактор взаимодействия, даже если исходное сообщение снабжено -m или -F.

Говоря иначе:

  • использовать -t <template> для запуска редактора на файл шаблона; или
  • -m <message>не запустите редактор и подайте сообщение в виде строки; или
  • -F <file> до не запустить редактор и предоставить сообщение из файла; или
  • использовать -m <message> --edit или -F <file> --edit, чтобы предоставить сообщение, но запустить редактор в конце концов.

См. the git commit documentation для получения более подробной информации.

+0

Большое спасибо Torek, это абсолютно идеально. Я действительно очень ценю, что вы помогаете в этом, и благодарим вас за то, что вы вложили столько подробностей в свой ответ, это действительно помогает новичкам GIT, таким как я. Я буду использовать параметр -e в моей команде слияния, чтобы заставить редактор. Это позволит мне выполнить слияние -no-ff с сообщением, которое следует за общим форматом сообщения фиксации, который я использовал. В случае, если это помогает кому-либо, моя команда слияния теперь будет выглядеть следующим образом: 'git merge --no-ff -m" message "-e featureBranchToMerge'. – user1649972