Como buscar todos os ramos do Git



12 Answers

Para listar filiais remotas:
git branch -r

Você pode vê-los como filiais locais com:
git checkout -b LocalName origin/remotebranchname

git branch git-branch

Eu clonei um repositório Git, que contém cerca de cinco ramificações. No entanto, quando eu git branch eu vejo apenas um deles:

$ git branch
* master

Eu sei que eu posso fazer git branch -a para ver todos os branches, mas como eu puxaria todos os branches localmente, então quando eu faço git branch , ele mostra o seguinte?

$ git branch
* master
* staging
* etc...



Se você fizer:

git fetch origin

então eles estarão todos lá localmente. Se você, então, executar:

git branch -a

você os verá listados como remotas / origin / branch-name. Uma vez que eles estão lá localmente, você pode fazer o que quiser com eles. Por exemplo:

git diff origin/branch-name 

ou

git merge origin/branch-name

ou

git checkout -b some-branch origin/branch-name



Use git fetch && git checkout RemoteBranchName .

Funciona muito bem para mim...




Quando você clona um repositório, todas as informações das ramificações são realmente baixadas, mas as ramificações ficam ocultas. Com o comando

$ git branch -a

você pode mostrar todos os ramos do repositório, e com o comando

$ git checkout -b branchname origin/branchname

você pode "baixá-los" manualmente, um de cada vez.

No entanto, há uma maneira muito mais limpa e rápida, embora seja um pouco complicado. Você precisa de três etapas para realizar isso:

  1. Primeiro passo

    crie uma nova pasta vazia em sua máquina e clone uma cópia espelhada da pasta .git do repositório:

    $ cd ~/Desktop && mkdir my_repo_folder && cd my_repo_folder
    $ git clone --mirror https://github.com/planetoftheweb/responsivebootstrap.git .git
    

    o repositório local dentro da pasta my_repo_folder ainda está vazio, há apenas uma pasta .git oculta que você pode ver com o comando "ls -alt" do terminal.

  2. Segundo passo

    Troque este repositório de um repositório vazio (vazio) para um repositório regular trocando o valor booleano "bare" das configurações do git para false:

    $ git config --bool core.bare false
    
  3. Terceiro passo

    Agarre tudo o que estiver dentro da pasta atual e crie todas as ramificações na máquina local, tornando assim um repositório normal.

    $ git reset --hard
    

Então agora você pode simplesmente digitar o comando git branch e você pode ver que todos os branches foram baixados.

Esta é a maneira rápida em que você pode clonar um repositório git com todos os branches de uma só vez, mas não é algo que você queira fazer para cada projeto dessa maneira.




Você pode buscar todos os ramos por:

git fetch --all

ou:

git fetch origin --depth=10000 $(git ls-remote -h -t origin)

O parâmetro --depth=10000 pode ajudar se você tiver um repositório --depth=10000 .

Para puxar todos os ramos, use:

git pull --all

Se acima não funcionar, então preceda o comando acima com:

git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'

como o remote.origin.fetch poderia suportar apenas um ramo específico ao buscar, especialmente quando você clonou seu repositório com --single-branch . Verifique isso por: git config remote.origin.fetch .

Depois disso, você poderá fazer o checkout de qualquer filial.

Veja também:

  • Como buscar todos os ramos remotos?
  • Como clonar todos os ramos remotos no Git?

Para empurrar todos os ramos para o controle remoto, use:

git push --all

eventualmente --mirror para espelhar todos os refs.

Se o seu objetivo é duplicar um repositório, consulte: Duplicando um artigo de repositório no GitHub.




Eu acredito que você tenha clonado o repositório

git clone https://github.com/pathOfrepository

agora vá para essa pasta usando o cd

cd pathOfrepository

se você digitar git status

você pode ver tudo

   On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

para ver todo o tipo de ramificação oculta

 git branch -a

listará todos os ramos remotos

Agora, se você quiser fazer o checkout em qualquer ramo em particular, basta digitar

git checkout -b localBranchName origin/RemteBranchName



Certifique-se de que todas as ramificações remotas estejam disponíveis no arquivo .git/config .

Neste exemplo, somente a ramificação de origin/production ser obtida, mesmo se você tentar fazer git fetch --all acontecerá, mas buscando a ramificação de production :

[origin]
fetch = +refs/heads/production:refs/remotes/origin/production

Esta linha deve ser substituída por:

[origin]
fetch = +refs/heads/*:refs/remotes/origin/*

Então execute git fetch etc ...




Apenas esses 3 comandos receberão todos os ramos

git clone --mirror repo.git  .git     (gets just .git  - bare repository)

git config --bool core.bare false         

git reset --hard                  



Para usuários do Windows usando o PowerShell:

git branch -r | ForEach-Object {
    # Skip default branch, this script assumes
    # you already checked-out that branch when cloned the repo
    if (-not ($_ -match " -> ")) {
        $localBranch = ($_ -replace "^.*/", "")
        $remoteBranch = $_.Trim()
        git branch --track "$localBranch" "$remoteBranch"
    }
}
git fetch --all
git pull --all



Podemos colocar todos os nomes de ramos ou marcas em um arquivo temporário, depois fazer o git pull para cada nome / tag:

git branch -r | grep origin | grep -v HEAD| awk -F/ '{print $NF}' > /tmp/all.txt
git tag -l >> /tmp/all.txt
for tag_or_branch in `cat /tmp/all.txt`; do git checkout $tag_or_branch; git pull origin $tag_or_branch; done



Baseado na resposta de Learath2, aqui está o que eu fiz depois de fazer git clone [...] e cd -ing no diretório criado:

git branch -r | grep -v master | awk {print\$1} | sed 's/^origin\/\(.*\)$/\1 &/' | xargs -n2 git checkout -b

Trabalhou para mim, mas não posso saber que funcionará para você. Seja cuidadoso.




Se você tiver problemas com fetch --all

em seguida, acompanhe seu ramo remoto

git checkout - origem da trilha /% branchname%




Related