Eu clonei um repositório, após o qual alguém criou uma nova ramificação, na qual gostaria de começar a trabalhar. Eu li o manual, e parece bem fácil. Estranhamente, não está funcionando, e todas as postagens que encontrei sugerem que estou fazendo a coisa certa. Então, vou me sujeitar à rejeição, porque deve haver algo obviamente errado com isso:
A ação correta parece ser
git fetch
git branch -a
* master
remotes/origin/HEAD --> origin/master
remotes/origin/master
git checkout -b dev-gml origin/dev-gml
Neste ponto, há um problema, por algum motivo, depois git fetch
que não consigo ver a ramificação remota dev-gml. Por que não? Se eu clonar o repositório recentemente, ele estará lá, então certamente a ramificação remota existe:
$ mkdir ../gitest
$ cd ../gitest
$ git clone https://github.com/example/proj.git
Cloning into proj...
remote: Counting objects: 1155, done.
remote: Compressing objects: 100% (383/383), done.
remote: Total 1155 (delta 741), reused 1155 (delta 741)
Receiving objects: 100% (1155/1155), 477.22 KiB | 877 KiB/s, done.
Resolving deltas: 100% (741/741), done.
$ cd projdir
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/dev-gml
remotes/origin/master
Eu tentei git update
, git pull
, git fetch --all
, git pretty-please
em todas as permutações possíveis ...
git config --get remote.origin.fetch
produz? Se não for+refs/heads/*:refs/remotes/origin/*
, provavelmente deveria ser.+refs/heads/master:refs/remotes/origin/master
com emmaster
vez de*
Respostas:
O problema pode ser visto ao verificar a
remote.origin.fetch
configuração(as linhas que começam com
$
são solicitações do bash com os comandos que eu digitei. As outras linhas são a saída resultante)Como você pode ver, no meu caso, o controle remoto foi configurado para buscar a ramificação principal especificamente e somente. Corrigi-o conforme abaixo, incluindo o segundo comando para verificar os resultados.
O curinga,
*
claro, significa tudo nesse caminho.Infelizmente, vi esse comentário depois de já ter pesquisado e encontrado a resposta por tentativa e erro.
fonte
--replace-all
parâmetro para substituir todos os valores da configuração para o meuremote.origin.fetch
git clone <url> --branch <branch> --single-branch [<folder>]
git clone ... --depth 1
Eu tive esse problema hoje em um repo.
Não era o
+refs/heads/*:refs/remotes/origin/*
problema conforme a solução principal.O sintoma era simplesmente isso
git fetch origin
ougit fetch
simplesmente não parecia fazer nada, embora houvesse ramificações remotas para buscar.Depois de tentar várias coisas, removi o controle remoto de origem e o recriei. Isso parece ter consertado. Não sei porque.
remover com:
git remote rm origin
e recrie com:
git remote add origin <git uri>
fonte
remote.origin.fetch
ie+refs/heads/*:refs/remotes/origin/*
. A solução acima me ajudou.git remote update origin
trabalhou para mim. Eu acho que algo precisava ser revigorado?git remote update origin
não funcionou para mim, mas remover e adicionar o controle remoto funcionou.Atualização remota
Você precisa correr
ou
Em seguida, você pode executar
git branch -r
para listar as ramificações remotas.Fazer check-out de uma nova filial
Para rastrear uma filial (nova) remota como filial local:
ou (às vezes não funciona sem o extra
remotes/
):Cheatsheets úteis do git
fonte
git fetch
seguido porgit branch -a
ele não mostra todos os ramos. Eu tive que excluir meu diretório de trabalho e clonar novamente para ver a filialdev-gml
que um colaborador criou. Funcionou desta vez, mas estaremos ramificando frequentemente!Edit:
muito bem pode ter funcionado. É o que eu tentaria se ainda estivesse enfrentando o problema. HTHgit remote update origin
. Isso tornou visível o ramo ausentegit branch -l -r
. (I fez olhadagit config --get remote.origin.fetch
e a saída foi+refs/heads/*:refs/remotes/origin/*
como esperado.)escreva do terminal
Funciona bem.
fonte
Para torná-lo mais específico Crie uma ramificação de rastreamento, o que significa que agora você está rastreando uma ramificação remota.
Após o qual você pode
Então, para trabalhar nesse ramo, faça
Depois de fazer alterações na ramificação. Você pode obter git fetch e git merge com sua ramificação de rastreamento remoto para mesclar suas alterações e enviar para a ramificação remota como abaixo.
Espero que ajude e lhe dê uma idéia de como isso funciona.
fonte
Eu tive um problema semelhante, no entanto, no meu caso, eu poderia puxar / empurrar para a filial remota, mas
git status
não mostrei o estado da filial local nos remotos.Além disso, no meu caso
git config --get remote.origin.fetch
, não retornou nadaO problema é que houve um erro de digitação no
.git/config
arquivo na linha de busca do respectivo bloco remoto. Provavelmente algo que eu adicionei por engano anteriormente (às vezes, olho diretamente para esse arquivo ou até o edito)Portanto, verifique se sua entrada remota no
.git/config
arquivo está correta, por exemplo:fonte
Isso pode ser devido a um momento de palma da mão: se você alternar entre vários clones, é fácil encontrar-se na árvore de origem incorreta tentando puxar um ramo inexistente. É mais fácil quando os clones têm nomes semelhantes ou os repositórios são clones distintos para o mesmo projeto de cada um dos múltiplos colaboradores. Obviamente, um novo clone do Git parece resolver esse "problema" quando o problema real está perdendo o foco, o contexto de trabalho ou ambos.
fonte
Eu tive que entrar nos meus Repositórios Remotos do GitExtensions, pois nada aqui parecia estar funcionando. Lá vi que duas filiais não tinham repositório remoto configurado. depois de ajustar, fica da seguinte maneira
O ramo de aviso
noExternal3
ainda é exibido como não tendo um repositório remoto. Não tenho certeza de qual combinação de comandos bash teria encontrado ou ajustado isso.fonte
Hoje tive o mesmo problema ao configurar meu repositório do zero. Eu tentei de tudo, nada funcionou, exceto remover a origem e adicioná-la novamente.
fonte
Tivemos o mesmo problema e você tem que usar
Espero que isso ajude alguém que enfrenta o mesmo problema
fonte