Migrei meus repos do Bitbucket ou Github. Não acho que isso importe, mas é a única coisa diferente ... Por um tempo eu tive dois controles remotos configurados:
origin: bitbucket
github: github
Então eu removi ambos e apontei a origem para o github:
git remote remove origin
git remote remove github
git remote add origin https://github....
Push de teste do branch de desenvolvimento:
git push origin develop
Tudo em dia, tudo bem.
Crie um novo branch para algum trabalho como de costume:
git checkout -b Feature/Name
Atualize um ou dois arquivos. Tente empurrar para remoto:
git push origin Feature/Name
Isso resulta no erro:
fatal: recurso / nome não pode ser resolvido para ramificação
Pesquise on-line por esse problema, encontre algumas informações sobre como garantir que o HEAD está correto, outras sobre como ter certeza de que a caixa do nome do meu branch está correta (embora, neste ponto, o branch ainda não exista no remoto). Incapaz de resolver.
Executou este comando:
git push --all -u
Isso levou meu Feature/Name
branch para o github, mas ainda vejo o mesmo comportamento de antes:
git push origin develop
git push origin Feature/Name
O primeiro funciona, o segundo lança o mesmo erro.
Não consigo descobrir por que estou recebendo esse erro. Alguma ideia?
Feature/Name
? Tem certeza de queFeature/Name
existe e esse é o branch com check-out? Verifique comgit branch
.git branch
para verificar seFeature/Name
existe localmente? Não confie em uma GUI ou IDE. Além disso, você entendeu o caso certo?git push origin Feature/Name:Feature/Name
?git push --all -u
eu tenho o novo branch no github, mas ainda não consegui empurrar do local, certo? Aqui está o que aconteceu com isso ... o nome do branch real éSQLMigration/ReportFixes
e o que está no github éSqlMigration/ReportFixes
. Então, agora eu possogit push origin SqlMigration/ReportFixes
- por que o github muda a caixa para mim? Agh.Respostas:
Eu também estava tendo esse problema e isso estava me deixando louco. Eu tinha algo parecido,
feature/name
masgit branch -a
me mostrouFEATURE/name
. Renomeando o branch, excluindo e recriando, nada funcionou. O que finalmente resolveu:Entrar
.git/refs/heads
Você verá uma
FEATURE
pasta. Renomeie-o parafeature
.fonte
Com base em meus próprios testes e nos comentários do OP , acho que em algum momento eles erraram sobre a caixa do nome do ramo.
Em primeiro lugar, acredito que o OP está em um sistema operacional que não diferencia maiúsculas de minúsculas, como o OS X ou o Windows. Então eles fizeram algo assim ...
Observe a diferença de revestimento. Observe também que o erro é muito diferente de se você apenas digitar o nome.
Como o Github usa o sistema de arquivos para armazenar nomes de ramos, ele tenta abrir
.git/refs/heads/SqlMigration/ReportFixes
. Como o sistema de arquivos não faz distinção entre maiúsculas e minúsculas, ele é aberto com êxito,.git/refs/heads/SqlMigration/ReportFixes
mas fica confuso quando tenta comparar os nomes dos ramos com distinção entre maiúsculas e minúsculas e eles não correspondem.Não tenho certeza de como eles chegaram a um estado em que fica a filial local
SQLMigration/ReportFixes
e a filial remotaSqlMigration/ReportFixes
. Não acredito que o Github mexeu com o nome do ramo remoto. A explicação mais simples é que outra pessoa com acesso push alterou o nome do branch remoto. Caso contrário, em algum momento eles fizeram algo que conseguiu criar o controle remoto com o erro de digitação. Se verificarem seu histórico de shell, talvez comhistory | grep -i sqlmigration/reportfixes
eles possam encontrar um comando onde digitaram incorretamente o invólucro.fonte
O Git permitirá que você verifique o branch atual com um caso diferente e não conseguirá encontrar um ref no remoto.
Só descobri da maneira mais difícil.
fonte
> git branch
e verificar se o seu branch tem um * próximo a ele.Uma coisa semelhante aconteceu comigo. Eu criei um branch chamado algo como "Feat / name". Tentei empurrar usando:
Recebi o mesmo erro fatal que você:
Para resolver eu criei um novo branch pois tive poucos arquivos impactados. Então eu listei meus branches para deletar o errado e ele apareceu sem tampa:
Eu já havia usado bonés antes, mas nunca no primeiro caractere. Parece que o git não gostou ...
fonte
É sensível a maiúsculas e minúsculas, apenas certifique-se de que o branch criado e o push to branch estão na mesma capital.
Exemplo:
Maneira ERRADA de fazer:
Maneira CORRETA de fazer:
fonte
Talvez você tenha esquecido de executar o git fetch? é necessário buscar dados do repositório remoto! Tente correr
git fetch remote/branch
fonte
Para o meu caso, eu costumava ter uma pasta de branch (ou como é chamada) com letras maiúsculas, então eu crio um novo com letras maiúsculas (minúsculas), mas git realmente cria o branch com maiúsculas.
Eu criei um branch como
feature-ABC/branch1
antes e empurrei-o. Em seguida, crio um branchfeature-abc/branch2
(observe o ABC em minúsculas) e tento colocá-lo no controle remoto usandogit push --set-upstream origin feature-abc/branch2
e recebo o erro 'não pode ser resolvido para o branch'. Então eugit branch
e vejo que realmente criou emfeature-ABC/branch2
vez defeature-abc/branch1
para mim. Eu faço checkout novamente comgit checkout feature-ABC/feature2
e empurro usando maiúsculas (feature-ABC/feature2
) para resolver.fonte
Eu enfrentei o mesmo problema que era devido à ramificação com invólucro errado. git deixe-me mudar para branch com caixa incorreta, ou seja, em
feature/Name
vez defeature/name
. Encontrou uma solução mais fácil do que a listada acima apenas:git checkout master (or develop)
git checkout feature/name
<com caixa corretagit push
fonte
Resolvi isso no Windows 10 usando cmd em vez de GitBash .
Tem a ver com maiúsculas e minúsculas e como git e linhas de comando os tratam.
fonte
Você pode ter criado um branch semelhante, mas com diferenciação de maiúsculas e minúsculas, então você deve executar:
git branch -D <name-of-different-case-branch>
e tente empurrar novamente.
fonte
Resposta ligeiramente modificada de @Ty Le:
nenhuma mudança nos arquivos foi necessária para mim - eu tinha um branch chamado 'Feature / ...' e enquanto empurrava o upstream mudei o título para 'feature / ...' (o caso da primeira letra foi alterado para o inferior )
fonte
Eu também tive esse problema e meus branches normais começam com,
pb-3.1-12345/namebranch
mas acidentalmente coloquei as 2 primeiras letras em maiúsculaPB-3.1/12345/namebranch
. Depois de renomear o branch para usar letras minúsculas, eu pude criar o branch.fonte
para mim eu estava nomeando branch como
tudo que eu tive que fazer foi quando usar
escrever
como eu costumava criar branches usando a letra r minúscula em rel.
então, o que causou esse problema?
quando listei
.git/refs/heads
conteúdo encontreimas não
Relx.x
!e dentro dele
bug
e dentrobug
do nome do meu ramo.Então, git tente criar um diretório com o mesmo nome, mas com letras maiúsculas diferentes
mas o sistema não diferencia maiúsculas de minúsculas.
Isso é o que causou esse problema!
fonte
Tive o mesmo problema com revestimento diferente.
Fiz uma verificação para o desenvolvimento (ou master) e depois alterei o nome (o nome errado) para algo como teste.
então mude o nome de volta para o nome correto
em seguida, check-out para o branch com nome correto
então funcionou para empurrar para o branch remoto
fonte
Para mim, o problema era que eu tinha git e meu sistema de arquivos macOS configurados para duas sensibilidades de maiúsculas e minúsculas diferentes. Meu Mac foi formatado como APFS / diferencia maiúsculas de minúsculas: NÃO, mas eu havia invertido minhas configurações git em algum ponto tentando resolver um problema estranho com a nomenclatura de ativos de imagem Xcode, então git config --global core.ignorecase false . Virando-o de volta, alinhei as configurações e recriando o galho e empurrando me trouxe de volta aos trilhos.
git config --global core.ignorecase true
Crédito: https://www.hanselman.com/blog/GitIsCasesensitiveAndYourFilesystemMayNotBeWeirdFolderMergingOnWindows.aspx
fonte
Tive o mesmo problema mas foi resolvido. Percebi que o nome do ramo diferencia maiúsculas de minúsculas. O branch principal no GitHub é 'master', enquanto no meu comando gitbash é 'Master'. Mudei o nome de Master no repositório local para master e funcionou! 😀😀
fonte
Encontrei o mesmo problema e percebi que confundi o invólucro ao verificar o galho. Eu fiz check-out em
branchName
vez deBranchName
e quando tentei empurrar para remoto, recebi o mesmo erro.O conserto:
Ao configurar o upstream com o nome correto, o branch correto foi atualizado no github e eu fui capaz de verificar o nome do branch correto com
E deve estar atualizado com seu último empurrão.
fonte
Se você estiver no branch local, pode renomear o branch "Feature / Name" para "feature / Name"
git -m feature/Name
se você tiver problemas para fazer um
git push
checkout em outro branch (por exemplo, desenvolver) e retornar ao branch renomeadogit checkout feature/Name
e tente novamente o seu
git push
fonte