Esta é provavelmente uma pergunta idiota, mas sou novato no git e estou vendo um ramo remoto que não existe mais.
$ git branch -a
* master
remotes/origin/master
remotes/origin/production
Não acredito que o ramo de produção exista remotamente e não consigo descobrir por que ele ainda é exibido localmente. Como posso excluir / remover esta ramificação? Veja como é uma tentativa de removê-lo:
$ git push origin :production
error: unable to push to unqualified destination: production
The destination refspec neither matches an existing ref on the remote nor
begins with refs/, and we are unable to guess a prefix based on the source ref.
error: failed to push some refs to 'git@IP:puppet.git'
Posso fazer o checkout do ramo de produção supostamente remoto, mas recebo o seguinte:
$ git checkout origin/production
Note: checking out 'origin/production'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at c323996... added powerdns module, no really
Não tenho idéia do que diabos estou fazendo. Qualquer ajuda seria apreciada.
git branch -a
depois de umgit fetch
?Respostas:
Você tem que fazer:
fonte
Portanto, existem dois problemas. Nos dois casos, lembre-se de que o Git é distribuído.
Primeiro. Quando você faz coisas como
a operação é executada no seu repositório local, NÃO no computador remoto. Em outras palavras, seu repositório local está relatando todos os ramos conhecidos. Podem ser ramificações locais (como 'mestre') ou ramificações remotas que foram buscadas em um controle remoto. Desde a última busca, a ramificação 'produção' do repositório remoto foi alterada, mas o repositório local não sabe disso. A resposta dos manojlds está correta. Corre
para remover galhos obsoletos.
O comando 'git push origin: production' é usado para excluir a ramificação do repositório git do computador remoto. Não é o seu representante local. Nesse caso, alguém já excluiu a ramificação no repositório git do computador remoto, para que você veja esta mensagem de erro.
Aqui está um link que resume esses comandos.
O segundo problema lida com o checkout.
Ao fazer check-out de uma ramificação, você deseja fazer isso de uma ramificação local , não da ramificação remota. É por isso que você recebe o erro sobre um HEAD desanexado. O repositório git-notes tem uma boa explicação do problema em detalhes sangrentos. Basicamente, a frase-chave é
Agora, como verificar uma filial local, igual à filial remota?
Fácil, você cria uma filial local, no momento da saída da filial remota.
fonte
está certo, basta adicionar a
--dry-run
opção de usar , que informa quais ramificações serão removidas do seu repositório local, mas na verdade não as removefonte