Depois de olhar para O protip de @filosottile totalmente incrível demonstrando como fazer checkout de uma solicitação de pull como um branch Eu comecei a pensar que deve haver uma maneira melhor de fazer isso do que ter que martelar todo o refspec todas as vezes.
Inicialmente, procurei maneiras de especificar vários refspec
s para o fetch
atributo do GitHub remote
…
[remote "origin"]
url = git@github.com:user/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
… mas, AFAICT, o fetch
atributo leva apenas o único refspec
. Então me ocorreu, se não podemos adicionar mais refspec
s a um controle remoto, talvez pudéssemos simplesmente adicionar mais remote
s! Então eu liguei git config -e
e fiz isso …
[remote "origin"]
url = git@github.com:user/repo.git
fetch = +refs/heads/*:refs/remotes/origin/*
[remote "origin-pull"]
url = git@github.com:user/repo.git
fetch = +refs/pull/*/head:refs/remotes/origin-pull/*
[remote "origin-merge"]
url = git@github.com:user/repo.git
fetch = +refs/pull/*/merge:refs/remotes/origin-merge/*
… et viola! A git remote update
me deu isso …
$ git remote update
Fetching origin
Fetching origin-pull
From github.com:user/repo
* [new ref] refs/pull/1/head -> origin-pull/1
Fetching origin-merge
From github.com:user/repo
* [new ref] refs/pull/1/merge -> origin-merge/1
Agora eu posso merge
/ rebase
commits de solicitações pull do GitHub sem ter que adicionar um remote
para o fork do autor (e sem ter que me lembrar disso refspec
. Dado que o GitHub fecha os problemas assim que você mescla e envia para o branch, isso cria um manuseio legal de solicitações pull usando apenas git
Ferramentas!
PS- Tenho certeza de que também podemos estender isso para abranger git-notes
.