Você pode dizer ao Git para puxar todos os branches assim:
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
Se você olhar para dentro .git/config
, será algo assim:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = false
[remote "origin"]
url = https://github.com/owner/repo.git
fetch = +refs/heads/master:refs/remotes/origin/master
[branch "master"]
remote = origin
merge = refs/heads/master
rebase = true
Eu comparei isso com um clone completo, e vi que a única diferença era o "fetch" em [remote "origin"]
.
Observação: estou executando o Git versão 1.8.2. As opções de configuração podem ter mudado se você estiver executando uma versão mais antiga do Git. Se meus comandos não funcionarem, recomendo dar uma olhada .git/config
para ver se você consegue ver algo semelhante.
git
ferramenta de linha de comando é incrivelmente poderosa (na verdade, a maioria dos comandos são implementados em termos de outros comandos), então você pode fazer um monte de coisas com ela depois de entender como o repositório é organizado (basicamente como a.git
pasta funciona )git show-ref tags
ainda falha.git clone --depth=1 --branch branchname [email protected]:foobar/repo.git destinationpath
Se quiser adicionar um único branch, você pode fazer o seguinte:
Funciona com git versão 1.9.1
fonte
fetch =
linhas a .git / config, muito útil quando você deseja alternar entre dois ramos no remoto, mas não busca um monte de outros ramos. Obrigado!Para adicionar outro branch remoto ao meu repositório local que foi clonado usando
--single-branch
, o seguinte funciona para mim:Você também pode usar curingas para
[remote-branch]
, por exemploIsso funciona usando git versão 2.21.1 . Outras respostas sugerindo fazer
git fetch origin [remote-branch]:[local-branch]
não funcionaram, pois isso cria a filial local em um estado não rastreado. Ao executá-git pull
lo primeiro tentei mesclar todos os commits do branch remoto ao meu local mais uma vez.fonte
Basta adicionar o repositório original como um novo controle remoto e trabalhar a partir daí?
Você pode até mesmo excluir seu controle remoto de 'origem' atual e renomear 'myNewOrigin' para 'origem' se desejar.
De lá, você pode puxar / mesclar / rebase.
fonte
Basta alterar o
.git/config
arquivo do seu repo local, linhafetch
de[remote origin] section
.Antes de algo assim
Depois será assim
fonte
Eu inicialmente apliquei a resposta de Dominik Pawlak e funcionou. Mas não fui capaz de extrair mais alterações, depois de comprometer mais código em meu novo branch.
Existe outra maneira de redefinir
single-branch
totalmente, que não foi mencionada aqui:Isso restaura tudo para o original.
fonte
Para mim funcionou:
fonte