Você pode emitir solicitações pull da linha de comando no GitHub?


298

Parece que você precisa interagir com o github.com para iniciar uma solicitação de recebimento. É assim?


2
Não vejo nada em sua API para fazer solicitações pull: develop.github.com
Adam Vandenberg


1
Em qual sistema operacional você pretende fazer isso?
IgorGanapolsky

Como fazer isso no Windows 8 ou 10?
Mathivanan KP 5/12

Eu criei um script bash para isso, se alguém estiver interessado.
Mvr

Respostas:


114

ATUALIZAÇÃO : O comando hub agora é um projeto oficial do github e também suporta a criação de solicitações pull

ORIGINAL :

Parece uma coisa particularmente útil para adicionar ao comando do hub: http://github.com/defunkt/hub ou a gema do github: http://github.com/defunkt/github-gem

Sugiro arquivar um problema com os projetos solicitando isso. Os caras do github são bem receptivos.


8
O github-gem incluiu uma facilidade para criar solicitações de pull para as idades: gh pull-request [user] [branch].
precisa

6
Funciona sem que o Github bifurque o repositório primeiro, ou seja, de um clone direto do repositório de origem?
Hari Karam Singh

1
@ Holger Just e mais ninguém: Isso apenas cria o texto de uma solicitação pull e não ignora a necessidade de um fork no Github. Ainda não encontrei uma maneira de contornar isso. Pretendo experimentar o utilitário 'pullr' publicado abaixo em breve. Veja aqui a questão das pessoas que solicitam suporte completo à solicitação de pull do github-gem.
mateor

1
para comando rápido usando hub:hub pull-request -m "message pull request" -b master -h your_branch
Gujarat Santana

Não sei por que ele não está mencionar nos documentos acima, mas para uma rápida fusão solicitação de recebimento, verificação geral o seu branch master fazerhub merge https://github.com/repo/pull/1
holmberd

53

Agora o Git é enviado com um subcomando 'git request-pull' [-p] <start> <url> [<end>]

Você pode ver os documentos aqui

Você pode achar isso útil, mas não é exatamente o mesmo que o recurso do GitHub .


7
@NathanBasanese Gera texto legível por humanos descrevendo a solicitação de recebimento. Os documentos do git e do livro do GitHub dizem para enviá-lo por e-mail ao mantenedor do projeto, alguém com privilégios de gravação no repositório compartilhado (possivelmente github). O mantenedor revisa o texto de solicitação de recebimento que você enviou (em vez de usar o processo de solicitação de solicitação on-line do github). Eles podem executar uma git pulldas URLs e ramificações indicadas na sua solicitação pull para mesclar suas alterações no clone local e enviar essas alterações para o github.
Hj

30

Com o wrapper da linha de comando do Hub, você pode vinculá-lo ao git e, em seguida, fazer git pull-request

Na página do manual do hub:

   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.

2
Não sabia sobre o Hub, está disponível via homebrew: brew install hubesta parece ser a resposta correta para usuários de mac.
wfbarksdale

1
//, Existe algum lugar online para o qual eu possa apontar pessoas para obter mais informações sobre o Hub?
Nathan Basanese

19

Um homem procura como ...

man git | grep pull | grep request

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

Mas, apesar do nome, não é o que você deseja. De acordo com os documentos:

Gere uma solicitação solicitando ao seu projeto upstream que puxe as alterações para a árvore deles. A solicitação, impressa na saída padrão, começa com a descrição da ramificação, resume as alterações e indica de onde elas podem ser extraídas.

O @HolgerJust mencionou a jóia do github que faz o que você deseja:

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

Outros mencionaram o hubpacote oficial pelo github:

sudo apt-get install hub

ou

brew install hub 

então

hub pull-request [-focp] [-b <BASE>] [-h <HEAD>]

3
Isso gera um resumo das alterações pendentes, não tem nada a ver com uma solicitação de recebimento que está a ser emitido via Github
flov

1
@Flov Por "This", eu assumo que você quer dizer a git request-pulllinha. Sim, isso faz sentido, mas estou surpreso que o git não tenha um comando para enviar solicitações por e-mail como o github. Afinal, o git config user.emailestá disponível para ele. Especialmente com um comando chamado pull-request.
Hj

2
Para o Ubuntu, parece que github-clinão está mais disponível após o Precise ... Abri uma pergunta para pedir uma alternativa.
IsaacS

7

Acabei fazendo o meu próprio , acho que funciona melhor nas outras soluções existentes.

https://npmjs.org/package/pullr


6
Tentei fazer pullr -n dentro do repositório clonado. Deu-me um erro ao abrir ... / clonedRepo / undefined / .pullr-token-cache no Windows 7. Você pode querer ter mais documentação - como um exemplo de uso?
BT

5

Recentemente, criei uma ferramenta que faz exatamente o que você deseja:

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

Ele automatiza tudo em um único comando, bifurcando o repositório, pressionando o PR etc. Ele também suporta a atualização do PR, se você precisar editá-lo / corrigi-lo!


5

Estou usando um alias simples para criar solicitação de recebimento,

alias pr='open -n -a "Google Chrome" --args "https://github.com/user/repo/compare/pre-master...nawarkhede:$(git_current_branch)\?expand\=1"'

2

Além disso github/hub, que atua como um proxy para o Git , você agora (fevereiro de 2020) tem cli/cli:

Consulte " Incremente sua experiência na linha de comando: a CLI do GitHub agora está na versão beta "

Crie uma solicitação pull

Crie uma ramificação, faça várias confirmações para corrigir o bug descrito no problema e use gh para criar uma solicitação de recebimento para compartilhar sua contribuição.

criação cli / cli pr - https://i1.wp.com/user-images.githubusercontent.com/10404068/74261506-35df4080-4cb0-11ea-9285-c41583009e6c.png?ssl=1

Ao usar a CLI do GitHub para criar solicitações de recebimento, ele também cria automaticamente uma bifurcação quando você ainda não possui um, e empurra sua ramificação e cria sua solicitação de recebimento para mesclar suas alterações.


E em abril de 2020: "A CLI do GitHub agora suporta solicitações pull de preenchimento automático e configuração personalizada "

O GitHub CLI 0.7 está disponível com vários dos aprimoramentos mais solicitados com base nos comentários que nossos usuários beta forneceram.
Desde a última versão menor, 0.6, existem três recursos principais:

  • Configure ghpara usar seu editor preferido com gh config set editor [editor].
  • Configure ghcomo padrão para SSH com gh config set git_protocol ssh.
    O protocolo Git padrão é HTTPS.
  • Preencher automaticamente o título e o corpo de uma solicitação pull de seus commits gh pr create --fill.

Assim:

gh pr create --fill

1

Eu já usei essa ferramenta antes - embora pareça que haja um problema em aberto primeiro, é super útil e simplifica o fluxo de trabalho se você usar o rastreamento de problemas do github. git open-pull e, em seguida, uma solicitação pull é enviada de qualquer filial em que você esteja ou selecione. https://github.com/jehiah/git-open-pull

EDIT: Parece que você pode criar problemas em tempo real, portanto, esta ferramenta é uma boa solução.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.