Можно ли создавать запросы слияния в чистом Git из командной строки?

Я использую установку Gironious позади брандмауэра.

Я могу зайти в веб-приложение и создать запрос на выгрузку из клона и настроить мастер-репо, из которого он был клонирован.

Я хотел бы иметь возможность сделать это в командной строке. Более конкретно, я хотел бы иметь возможность открывать запросы слияния из командной строки из одной ветки в другую (а не из репозитория клонирования в семя).

Поскольку я не использую Github, я не могу использовать специальные инструменты или библиотеки Github. Это возможно?

Ответ 1

В git нет такой вещи, как "запрос слияния". Итак, если это будет возможно, для этого потребуются инструменты Gitorious. Это невозможно в чистом git.

Ответ 2

Ответ, данный svick, неверен. Вполне возможно.

Там git request-pull который входит в комплект Git. Используя этот инструмент командной строки, вы можете создать запрос на перенос, который может быть отправлен на E-Mail.

Пример:
ваше origin содержит master ветки. Теперь вы создаете локальное исправление ветки fix, реализуете исправление ошибки и нажимаете эту ветвь fix на origin:

git push origin fix:fix

Затем вы хотите, чтобы кто-то объединил изменения, внесенные в ветвь fix в master. Создайте запрос на растяжение с помощью

git request-pull master origin

Это создаст текст, форматированный следующим образом:

The following changes since commit <SHA of master>:

  <commit message of SHA of mster>

are available in the git repository at:
  <repo location> fix

<User Name> (<Number of Commits>):
      <messages of the commits>
      ...

 <changed files>
 ...
 <file statistics>

Если запрос слияния должен перейти к кому-то, у которого нет доступа к вашему репо, где вы подтолкнули ваши изменения, всегда есть возможность сделать это с помощью git format-patch.

После того, как вы нажмете свою ветвь fix на origin (вам даже не нужно это делать), находясь на ветке fix создайте патч, используя

git format-patch master..

Это создаст файл исправления для каждой фиксации, сделанной вами в fix с момента разворачивания master. Вы можете связать сгенерированные файлы .patch с

tar czf fix.tgz *.patch

а затем отправить кому-то, например, через E-Mail, чтобы просмотреть и применить.

Ради полноты: применение патчей может быть выполнено с помощью git am.

Ответ 4

Gitlab добавляет эту функцию с v11.10. После внесения ваших окончательных изменений вместо push просто используйте:

git push -o merge_request.create

создать запрос на слияние. Подробнее в док.