Eu gostaria de clonar um repositório do GitHub. O problema é que eu não quero o ramo principal; Quero a versão nesta solicitação de recebimento não aprovada .
É possível clonar a versão da solicitação de recebimento em vez do repositório principal?
Eu gostaria de clonar um repositório do GitHub. O problema é que eu não quero o ramo principal; Quero a versão nesta solicitação de recebimento não aprovada .
É possível clonar a versão da solicitação de recebimento em vez do repositório principal?
Respostas:
Você pode clonar a ramificação desejada usando a -b
opção e a solicitação pull:
git clone https://github.com/user_name/repo_name.git -b feature/pull_request_name dir_name
No seu caso, a ramificação que você deseja clonar é a ramificação de origem da solicitação pull ( feature/mongoose-support
):
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support ./mongoose-support
A maneira mais fácil de fazer isso é assim:
git fetch origin pull/2/head
git checkout -b pullrequest FETCH_HEAD
Agora você estará em uma nova ramificação que está no estado da solicitação de recebimento.
Você pode configurar um alias executando
git config --global alias.pro '!f() { git fetch -fu ${2:-origin} refs/pull/$1/head:pr/$1 && git checkout pr/$1; }; f'
Agora você pode fazer o checkout de qualquer PR executando git pr <pr_number>
, ou git pr <pr_number> <remote>
se o seu github remote não tiver esse nome origin
.
.gitconfig
arquivo sob [alias]
: pr = "!f() { git fetch $1 pull/$2/head:pull_$2; git co pull_$2; }; f"
. Dessa forma, basta digitar git pr upstream 62
e, em seguida, sei que estou em um novo ramo da PR # 62 a montante! Se você sempre usa, origin
pode codificá-lo em vez de $1
, mas isso muda para mim.
co
git fetch origin refs/pull/PR_NUMBER/head:NEW_LOCAL_BRANCH
por exemplo:
$ git fetch origin pull/611/head:pull_611
$ git checkout pull_611
Faça alterações, confirme com elas, PUSH e abra um novo PR do seu fork no GitHub
Você pode seguir as instruções nesta lista para poder verificar o controle remoto diretamente sem precisar descobrir seu repositório e ramificação.
Exemplo de uso
Para um dos meus projetos (github3.py), tenho o seguinte no meu github3.py/.git/config
[remote "github"]
fetch = +refs/heads/*:refs/remotes/github/*
fetch = +refs/pull/*/head:refs/remotes/github/pr/*
url = git@github.com:sigmavirus24/github3.py
A primeira linha é o padrão para cada controle remoto, com a exceção github
substituída pelo nome do controle remoto. O que isso significa é que os chefes remotos (ou os chefes das filiais nesse servidor) são "mapeados" para controles remotos locais prefixados por github/
. Então, se eu fiz git fetch github
e tinha uma filial no GitHub que já não foi notado localmente na minha máquina, seria baixar o ramo e eu poderia mudar para ele assim: git checkout -t github/branch_name
.
A segunda linha faz a mesma coisa, mas faz para solicitações pull em vez de ramos git padrão. É por isso que você vê refs/pull/*/head
. Ele busca o cabeçalho de cada solicitação pull no GitHub e o mapeia github/pr/#
. Portanto, se alguém enviar uma solicitação pull e estiver numerada 62 (por exemplo), você faria:
git fetch github
git checkout -t github/pr/62
E então você estaria em uma filial local chamada pr/62
(assumindo que ela ainda não existisse). É legal e significa que você não precisa acompanhar os controles ou ramificações de outras pessoas.
git clone https://github.com/berstend/frappe.git -b feature/mongoose-support /my_clone
o documento principal.
git fetch github
pode, então você pode git co -t github/pr/#
. Isso evita que você precise copiar e colar o URL remoto, descobrir o nome do ramo, etc. Você recebe nomes de galhos bem nomeados, concisos e precisos, sem o incômodo extra. Mas eu entendo que isso pode parecer esmagador.
git clone git://github.com/dweldon/frappe
cd frappe
git pull origin pull/2/head
Como posso buscar uma solicitação pull não imergida para uma ramificação que não possuo?
git pull
cria uma mesclagem na ramificação atual; geralmente para um PR que você deseja obter apenas git fetch
o código do autor original (ele fica acessível como FETCH_HEAD). Se você deseja uma mesclagem, vale a pena mencionar pull/2/merge
(em vez de pull/2/head
) - isso faz com que o GitHub lhe dê o commit de mesclagem exato que aconteceria se você clicasse no botão [Mesclar] agora.
Quando um usuário envia uma solicitação de recebimento, está solicitando que algumas alterações sejam mescladas de uma ramificação no clone de uma bifurcação para o repositório de outro usuário.
As alterações desejadas podem ser obtidas na origem da solicitação de recebimento. Para fazer isso, clone o repositório do usuário ( git://github.com/berstend/frappe.git
) e verifique a ramificação na qual ele criou a solicitação pull ( feature/mongoose-support
).
Depois de instalar o git-extras
(cd /tmp && git clone --depth 1 https://github.com/tj/git-extras.git && cd git-extras && sudo make install)
Você pode simplesmente usar git pr
$ git pr 62 [remote]
Com a nova interface de linha de comando oficial do Github :
gh repo clone org/repo
cd repo
gh pr checkout 44
onde 44
é o número PR, mas também pode ser o nome da filial.
Veja detalhes adicionais e opções e instruções de instalação .
clone
mas afetch
ver: stackoverflow.com/questions/6743514/…