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

298

Похоже, что вы должны взаимодействовать с github.com, чтобы инициировать пул-запрос. Это так?

Эндрю Джонсон
источник
2
Я не вижу в их API ничего для выполнения запросов на получение доступа
Адам Ванденберг,
1
На какой операционной системе вы собираетесь это делать?
Игорь Ганапольский
Как это сделать в Windows 8 или 10?
Мативанан КП
Я создал скрипт bash для этого, если кому-то интересно.
mvr

Ответы:

114

ОБНОВЛЕНИЕ : команда hub теперь является официальным проектом github и также поддерживает создание запросов на извлечение

ОРИГИНАЛ :

Похоже, что особенно полезная вещь для добавления в команду хаба: http://github.com/defunkt/hub или гем github: http://github.com/defunkt/github-gem

Я предлагаю подать проблему с теми проектами, просящими это. Ребята из Github довольно отзывчивы.

канак
источник
8
GitHub-камень включал средство для создания подтягивания запросов для возрастов: gh pull-request [user] [branch].
Хольгер только
6
Работает ли он без того, чтобы Github сначала разветвлял репо, т.е. из прямого клона исходного репо?
Хари Карам Сингх
1
@Holger Как и любой другой: он просто создает текст запроса на получение и не игнорирует необходимость в форке Github. Я еще не нашел способ обойти это. Я собираюсь попробовать утилиту «pullr», размещенную ниже в ближайшее время. Смотрите здесь вопрос о людях, запрашивающих полную поддержку pull-request у github-gem.
Метеор
1
для быстрой команды, используя hub:hub pull-request -m "message pull request" -b master -h your_branch
Гуджарат Сантана
Не знаю, почему это не упомянуто в вышеупомянутых документах, но для быстрого слияния запросов извлечения, проверьте вашу главную ветку dohub merge https://github.com/repo/pull/1
holmberd
53

Git теперь поставляется с подкомандой 'git request-pull' [-p] <start> <url> [<end>]

Вы можете увидеть документы здесь

Это может оказаться полезным, но оно не совсем то же, что и функция GitHub .

Zensaburou
источник
7
@NathanBasanese Генерирует читабельный текст, описывающий запрос на извлечение. Git документы и GitHub книги говорят по электронной почте это сопровождающий проект, кто - то с правами на запись на общий репо (возможно GitHub). Сопровождающий просматривает отправленный вами текст запроса на получение (вместо того, чтобы использовать онлайн-процесс получения запросов на github). Они могут выполнить git pullURL-адрес и ответвление, указанные в вашем запросе на извлечение, чтобы объединить ваши изменения с их локальным клоном и передать эти изменения в github.
вар
30

С помощью оболочки командной строки Hub вы можете связать ее с Git, а затем вы можете сделать git pull-request

Из справочной страницы хаба:

   git pull-request [-f] [TITLE|-i ISSUE|ISSUE-URL] [-b BASE] [-h HEAD]
          Opens a pull request on GitHub for the project that the "origin" remote points to. The default head of the pull request is the current branch. Both base and head of the pull request can be explicitly given in one  of  the  following  formats:  "branch",  "owner:branch",
          "owner/repo:branch". This command will abort operation if it detects that the current topic branch has local commits that are not yet pushed to its upstream branch on the remote. To skip this check, use -f.

          If TITLE is omitted, a text editor will open in which title and body of the pull request can be entered in the same manner as git commit message.

          If instead of normal TITLE an issue number is given with -i, the pull request will be attached to an existing GitHub issue. Alternatively, instead of title you can paste a full URL to an issue on GitHub.
Flov
источник
2
Не знал о Hub, он доступен через homebrew: brew install hubэто похоже на правильный ответ для пользователей Mac.
wfbarksdale
1
// Есть ли где-нибудь в Интернете, на что я мог бы указать людям для получения дополнительной информации о Hub?
Натан Басанезе
19

Мужчина ищет как ...

man git | grep pull | grep request

дает

git request-pull <start> <url> [<end>]

Но, несмотря на название, это не то, что вы хотите. Согласно документам:

Создайте запрос с просьбой к вашему исходному проекту внести изменения в их дерево. Запрос, выводимый на стандартный вывод, начинается с описания ветви, суммирует изменения и указывает, откуда их можно извлечь.

@HolgerJust упомянул жемчужину github, которая делает то, что вы хотите:

sudo gem install gh 
gh pull-request [user] [branch]

Другие упомянули официальный hubпакет от github:

sudo apt-get install hub

или

brew install hub 

затем

hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]
варочные панели
источник
3
Это генерирует сводку ожидающих изменений, это не имеет никакого отношения к запросу на получение, который выдается через Github
Flov
1
@Flov "Это", я полагаю, вы имеете в виду git request-pullлинию. Да, это имеет смысл, но я удивлен, что у git нет команды для отправки запросов на получение писем, как у github. В конце концов, git config user.emailэто доступно для него. Особенно с командой по имени pull-request.
Конфе
2
Для Ubuntu, похоже, github-cliбольше не доступно после Precise ... Я открыл вопрос, чтобы попросить альтернативу.
Исаак
7

В итоге я сделал свой собственный , и обнаружил, что он работает лучше других решений, которые были вокруг.

https://npmjs.org/package/pullr

samccone
источник
6
Пробовал делать pullr -n внутри клонированного репозитория. Дали мне ошибку при открытии ... / clonedRepo / undefined / .pullr-token-cache на windows 7. Возможно, вы захотите иметь больше документации - например, пример использования?
БТ,
5

Недавно я создал инструмент, который делает именно то, что вы хотите:

https://github.com/jd/git-pull-request

Он автоматизирует все в одной команде, разветвляет репо, нажимает PR и т.д. Он также поддерживает обновление PR, если вам нужно отредактировать / исправить его!

jd_
источник
5

Я использую простой псевдоним для создания запроса на извлечение,

alias pr='open -n -a "Google Chrome" --args "https://github.com/user/repo/compare/pre-master...nawarkhede:$(git_current_branch)\?expand\=1"'
Нишант Навархеде
источник
2

Кроме того github/hub, который действует как прокси для Git , у вас сейчас (февраль 2020) естьcli/cli :

См. « Улучшите работу с командной строкой: GitHub CLI сейчас в бета-версии »

Создать пул-запрос

Создайте ветку, сделайте несколько коммитов, чтобы исправить ошибку, описанную в этой проблеме, и используйте gh, чтобы создать запрос на извлечение, чтобы поделиться вашим вкладом.

создание Cli / Cli - https://i1.wp.com/user-images.githubusercontent.com/10404068/74261506-35df4080-4cb0-11ea-9285-c41583009e6c.png?ssl=1

Используя GitHub CLI для создания запросов извлечения, он также автоматически создает разветвление, когда у вас его еще нет, и толкает вашу ветку и создает ваш запрос разрыва, чтобы объединить ваши изменения.


А в апреле 2020 года: « GitHub CLI теперь поддерживает автоматическое заполнение запросов на выборку и пользовательскую настройку »

GitHub CLI 0.7 вышел с несколькими наиболее востребованными улучшениями из отзывов наших бета-пользователей.
Начиная с последнего минорного выпуска, 0.6, есть три основных функции:

  • Настройте ghдля использования предпочитаемого вами редактора с gh config set editor [editor].
  • Настройте ghпо умолчанию на SSH с gh config set git_protocol ssh.
    Протокол Git по умолчанию - HTTPS.
  • Автозаполните заголовок и текст запроса на получение из ваших коммитов gh pr create --fill.

Так:

gh pr create --fill
VonC
источник
1

Я использовал этот инструмент раньше - хотя кажется, что сначала нужно открыть проблему, она очень полезна и действительно оптимизирует рабочий процесс, если вы используете отслеживание проблем github. git open-pull и затем отправляется запрос на получение из любой выбранной вами ветки. https://github.com/jehiah/git-open-pull

РЕДАКТИРОВАТЬ: похоже, вы можете создавать проблемы на лету, поэтому этот инструмент является хорошим решением.

Andruf
источник