Como baixar um ramo com git?

214

Eu tenho um projeto hospedado no GitHub. Criei uma ramificação em um computador e depois enviei minhas alterações para o GitHub com:

git push origin branch-name

Agora estou em um computador diferente e quero fazer o download dessa ramificação. Então eu tentei:

git pull origin branch-name

... mas tudo isso fez sobrescrever minha ramificação principal com as alterações em minha nova ramificação.

O que preciso fazer para puxar corretamente minha ramificação remota, sem substituir as ramificações existentes?

Andrew
fonte

Respostas:

375

Graças a uma pergunta relacionada , descobri que preciso "efetuar check-out" da filial remota como uma nova filial local e especificar um novo nome de filial local.

git checkout -b newlocalbranchname origin/branch-name

Ou você pode fazer:

git checkout -t origin/branch-name

Este último criará uma ramificação que também está definida para rastrear a ramificação remota.


Atualização: Faz cinco anos desde que postei originalmente esta pergunta. Eu aprendi muito e o git melhorou desde então. Meu fluxo de trabalho habitual é um pouco diferente agora.

Se eu quiser buscar as ramificações remotas, simplesmente corro:

git pull

Isso buscará todas as ramificações remotas e mesclará a ramificação atual. Ele exibirá uma saída parecida com esta:

From github.com:andrewhavens/example-project
   dbd07ad..4316d29  master     -> origin/master
 * [new branch]      production -> origin/production
 * [new branch]      my-bugfix-branch -> origin/my-bugfix-branch
First, rewinding head to replay your work on top of it...
Fast-forwarded master to 4316d296c55ac2e13992a22161fc327944bcf5b8.

Agora o git sabe sobre o meu novo my-bugfix-branch. Para mudar para este ramo, posso simplesmente executar:

git checkout my-bugfix-branch

Normalmente, eu precisaria criar a ramificação antes de poder fazer o check-out, mas nas versões mais recentes do git, é inteligente o suficiente saber que você deseja fazer check - out de uma cópia local dessa ramificação remota.

Andrew
fonte
Eu estou usando GIT 1.7.2.5, eo comando que funcionou para mim foi: git branch --track XX origin/XX. Seu comando me dá um erro.
Dimitarvp
8
Se você não tiver baixado todas as ramificações remotas, isso poderá falhar. Faça "git remote update" para puxá-los para baixo.
21412 Ben Bending
1
Na verdade, pode ser ainda mais "git checkout branch-name". Se o nome da filial for o mesmo que uma filial de rastreamento remoto (ou seja, origem / nome da filial), será automaticamente uma filial de rastreamento local.
DavidN
64

Para qualquer iniciante no Git como eu, aqui estão algumas etapas que você pode seguir para fazer o download de um repositório remoto e, em seguida, alternar para o ramo que deseja visualizar. Eles provavelmente abusam do Git de alguma forma, mas ele fez o trabalho para mim! :-)

Clone o repositório para o qual você deseja baixar o código (neste exemplo, eu escolhi o projeto LRResty no Github):

$ git clone https://github.com/lukeredpath/LRResty.git
$ cd LRResty

Verifique qual ramificação você está usando neste momento (deve ser a ramificação principal):

$ git branch    
* master

Confira o ramo que você deseja, no meu caso, é chamado de 'arcificado':

 $ git checkout -b arcified origin/arcified
 Branch arcified set up to track remote branch arcified from origin.
 Switched to a new branch 'arcified'

Confirme agora que você está usando o ramo que deseja:

$ git branch    
* arcified
  master

Se você deseja atualizar o código novamente mais tarde, execute git pull:

$ git pull
Already up-to-date.
Dan J
fonte
"Eles provavelmente abusam do Git de alguma forma" - não, isso é exatamente correto.
Big McLargeHuge
27

Você pode usar o git remote como:

git fetch origin

e então configure uma filial local para rastrear a filial remota como abaixo:

git branch --track [local-branch-name] origin/remote-branch-name

Agora você teria o conteúdo da ramificação remota do github em local-branch-name.

Você pode mudar para esse nome de filial local e começar a trabalhar:

git checkout [local-branch-name]
ardsrk
fonte
17

você pode usar :

git clone <url> --branch <branch>

clonar / baixar apenas o conteúdo da ramificação.

Isso me ajudou especialmente, pois o conteúdo do meu ramo era totalmente diferente do ramo principal (embora esse não seja geralmente o caso). Portanto, as sugestões listadas por outras pessoas acima não me ajudaram e eu acabaria recebendo uma cópia do mestre, mesmo depois de fazer o check-out do ramo e fazer um git pull.

Este comando forneceria diretamente o conteúdo da ramificação. Funcionou para mim.

Old Markus
fonte
1
Esta é a melhor resposta. Simples e eficaz.
derek
2
Isso não parece funcionar para mim. Ele diz que já existe uma pasta com esse nome (que, naturalmente, não é)
Jonathan Tuzman
1
@ Jonathan Não anexará uma nova ramificação à sua já existente. Só pode ser usado para clonar uma nova cópia. Não vejo por que já deveria haver uma pasta com esse nome se você ainda não clonou o repositório. Tente clonar em um local diferente.
Old Markus
Não atualizar um projeto existente com o novo ramo
Dazzle
16

Navegue até a pasta em sua nova máquina que deseja baixar do git no git bash.

Use o comando abaixo para baixar o código de qualquer filial que você desejar

git clone 'git ssh url' -b 'Branch Name'

Ele fará o download do respectivo código da filial.

Srikanta Sahoo
fonte
9

Clone e cd do Git no nome do repositório:

$ git clone https://github.com/PabloEzequiel/iOS-AppleWach.git
Cloning into 'iOS-AppleWach'...
$ cd iOS-AppleWach

Alterne para o ramo (uma página do GitHub) que eu quero:

$ git checkout -b gh-pages origin/gh-pages
Branch gh-pages set up to track remote branch gh-pages from origin.
Switched to a new branch 'gh-pages'

E puxe o galho:

$ git pull
Already up-to-date.

ls:

$ ls
index.html      params.json     stylesheets
Pablo Ezequiel
fonte
0

git checkout -b branch / name

ramificação / nome da origem do git pull

Deslumbrar
fonte
0

Podes tentar

git fetch <remoteName> <branchName>

Por exemplo:

git fetch origin MyRemoteBranch
Bimzee
fonte
-8

Crie um novo diretório e faça um clone.

clone git (endereço de origem) (nome da ramificação)

seisatsu
fonte
3
Você não pode clonar apenas uma ramificação no Git. Somente um clone de repositório completo pode ser executado.
Alan Haggai Alavi