Quando você usa git push origin :staleStuff
, ele remove automaticamente origin/staleStuff
, portanto, quando você executou git remote prune origin
, removeu algum ramo que foi removido por outra pessoa. É mais provável que seus colegas de trabalho agora precisem correr git prune
para se livrar dos ramos que você removeu.
Então o que exatamente git remote prune
faz? Idéia principal: branches locais (não rastreando branches) não são tocados por git remote prune
comando e devem ser removidos manualmente.
Agora, um exemplo do mundo real para melhor compreensão:
Você tem um repositório remoto com 2 ramos: master
e feature
. Vamos supor que você esteja trabalhando em ambos os branches, então, como resultado, você tem essas referências em seu repositório local (nomes de referência completos são fornecidos para evitar qualquer confusão):
refs/heads/master
(nome curto master
)
refs/heads/feature
(nome curto feature
)
refs/remotes/origin/master
(nome curto origin/master
)
refs/remotes/origin/feature
(nome curto origin/feature
)
Agora, um cenário típico:
- Algum outro desenvolvedor termina todo o trabalho no
feature
, funde-o master
e remove o feature
branch do repositório remoto.
- Por padrão, quando você faz
git fetch
(ou git pull
), nenhuma referência é removida de seu repositório local, então você ainda tem todas essas 4 referências.
- Você decide limpá-los e fugir
git remote prune origin
.
- git detecta que o
feature
branch não existe mais, então refs/remotes/origin/feature
é um branch obsoleto que deve ser removido.
- Agora você tem 3 referências, incluindo
refs/heads/feature
, porque git remote prune
não remove nenhuma refs/heads/*
referência.
É possível identificar filiais locais, associadas a filiais de rastreamento remoto, por branch.<branch_name>.merge
parâmetro de configuração. Este parâmetro não é realmente necessário para que nada funcione (provavelmente exceto git pull
), então pode estar faltando.
(atualizado com exemplos e informações úteis de comentários)
git remote show origin
e procurar por qualquer branches marcadostale