To prawdopodobnie głupie pytanie, ale jestem nowy w git i widzę zdalną gałąź, która już nie istnieje.
$ git branch -a
* master
remotes/origin/master
remotes/origin/production
Nie wierzę, że gałąź produkcyjna istnieje zdalnie i nie mogę zrozumieć, dlaczego nadal jest wyświetlana lokalnie. Jak mogę usunąć / usunąć tę gałąź? Oto jak wygląda próba jego usunięcia:
$ 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'
Mogę sprawdzić rzekomo zdalną gałąź produkcyjną, ale otrzymuję to:
$ 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
Nie mam pojęcia, co do cholery robię. Każda pomoc będzie mile widziana.
git branch -a
pogit fetch
?Odpowiedzi:
Musisz zrobić:
źródło
Więc są dwa problemy. W obu przypadkach pamiętaj, że Git jest dystrybuowany.
Pierwszy. Kiedy robisz takie rzeczy jak
operacja jest wykonywana na lokalnym repozytorium, a NIE na komputerze zdalnym. Innymi słowy, lokalne repozytorium raportuje wszystkie znane mu gałęzie. Mogą to być oddziały lokalne (takie jak „master”) lub gałęzie zdalne pobrane z pilota. Od czasu ostatniego pobrania gałąź „produkcja” zdalnego repozytorium uległa zmianie, ale lokalne repozytorium o tym nie wie. Odpowiedź od manojlds jest prawidłowa. Biegać
aby usunąć nieświeże gałęzie.
Polecenie „git push origin: production” służy do usuwania gałęzi z repozytorium git komputera zdalnego. Nie twoje lokalne repozytorium. W tym przypadku ktoś inny usunął już gałąź w repozytorium git komputera zdalnego, więc zobaczysz ten komunikat o błędzie.
Oto link podsumowujący te polecenia.
Drugi problem dotyczy kasy.
Podczas sprawdzania oddziału chcesz to zrobić z oddziału lokalnego , a nie zdalnego. Dlatego pojawia się błąd dotyczący odłączonej HEAD. W git-notes repo ma dobre wyjaśnienie problemu w gory szczegółach. Zasadniczo frazą kluczową jest
Teraz, jak sprawdzić oddział lokalny, czyli taki sam jak oddział zdalny?
Łatwo, tworzysz oddział lokalny, w momencie kasowania oddziału zdalnego.
źródło
ma rację, wystarczy dodać, że możesz użyć
--dry-run
opcji, która informuje, które gałęzie zostaną usunięte z lokalnego repozytorium, ale tak naprawdę ich nie przycinaźródło