Eu adoro o fluxo de trabalho tradicional do GitHub de receber pull request, fazer pull request para testar e fazer merge do pull request. O GitHub facilita a primeira e a terceira etapas, mas puxar pull requests de novos contribuidores exige um trabalho de padrão que me irrita…


…ou seja, navegar até a bifurcação deles e copiar o endereço da bifurcação para que eu possa fazer isso:



git pull https://github.com/some-new-user/repo.git branch-name


E como o senhor não sabe se o autor contribuirá mais no futuro, não faz sentido adicioná-lo como remoto (via git remote add) – o senhor só vai atrapalhar sua listagem remota.


Após anos dessa dança irritante, descobri que o TeamPorcupine’s um incrível alias do git para puxar facilmente as solicitações pull:



git config --global --add alias.pr '!f() { git fetch -fu ${2:-upstream} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'

git config --global --add alias.pr-clean '!git checkout master ; git for-each-ref refs/heads/pr/* --format="%(refname)" | while read ref ; do branch=${ref#refs/heads/} ; git branch -D $branch ; done'


O primeiro alias acima, git prpermite que o senhor faça pull down de um pull request por ID, criando um novo branch para ele:



~/Projects/debugger.html (master) $ git pr 4862
From https://github.com/devtools-html/debugger.html
 * [new ref]           refs/pull/4862/head -> pr/4862
Switched to branch 'pr/4862'

~/Projects/debugger.html (pr/4862) $


O segundo pseudônimo, git pr-clean, exclui todas as ramificações criadas com git pr:



~/Projects/debugger.html (pr/4862) $ git pr-clean
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 190 commits.
  (use "git push" to publish your local commits)
husky > npm run -s postcheckout (node v8.5.0)

Deleted branch pr/4862 (was 10fe5049).
~/Projects/debugger.html (master) $


Observação: O senhor deve ter um controle remoto chamado upstream que aponte para o repositório upstream.


Não posso dizer aos senhores o quanto estou feliz por ter este pr e como é um bônus o fato de o pr-clean é um bônus. A verificação dos PRs será muito mais rápida e poderei me concentrar mais na revisão do código e da funcionalidade do que no processo!