Jak pozbyć się „spowodowałoby przebicie istniejącego tagu”

130

Używam git w VSCodium i za każdym razem, gdy próbuję wyciągnąć git, narzeka.

Patrząc w dziennik, który widzę

> git pull --tags origin master
From https://github.com/MY/REPO
 * branch            master     -> FETCH_HEAD
 ! [rejected]        latest     -> latest  (would clobber existing tag)
   9428765..935da94  master     -> origin/master

Wykonanie polecenia z --forcepomaga do następnego razu.

Nie jest dla mnie jasne, co się tutaj dzieje. Co się stało i jak mogę rozwiązać ten problem?

Mam na myśli: Oprócz skasowania mojego lokalnego repozytorium i ponownego klonowania.

Skeeve
źródło

Odpowiedzi:

335

Powinieneś zaktualizować tagi lokalne za pomocą tagów zdalnych:

git fetch --tags -f

Następnie pociągnij ponownie.

Tuan Tran
źródło
14
To zadziałało dla mnie. Miałem problemy z VSCode, a uruchomienie tego w wierszu poleceń rozwiązało problem. :)
Juan Luis Faylon
2
Dzięki, czy możesz wyjaśnić więcej na ten temat? Czy to jednorazowe polecenie, na czym dokładnie polegał problem i jak go rozwiązało ..
Sagiv bg
5
@ Sagivb.g na pilocie, ktoś usuwa tag i tworzy nowy o tej samej nazwie, wtedy stanie się to na twoim lokalnym
Tuan Tran
41

Ponieważ mówisz, że nie jest jasne, co się dzieje, zakładam, że nie używasz tego tagu do niczego i chcesz po prostu wykonać własną pracę.

Wyłącz to ustawienie:

wprowadź opis obrazu tutaj

Teraz wszystko gotowe.


Szczegółowe wyjaśnienie:

Tagi są po prostu odniesieniami do konkretnych zatwierdzeń (podobnie jak nazwy gałęzi). Główna różnica polega na tym, że git(o ile wiem) zakłada, że ​​tagi się nie zmienią, w przypadku których oczekuje się aktualizacji gałęzi.

Tak więc "błąd" polega na tym, że masz w swoim lokalnym znacznik o nazwie latestwskazujący na zatwierdzenie X - ale pilot ma znacznik o nazwie latestwskazujący na zatwierdzenie Y. Jeśli zastosujesz zmianę z pilota, nadpiszesz swój lokalny znacznik.

VSCode domyślnie pobierze wszystkie tagi, więc pojawi się błąd.

Nie ma nic złego w posiadaniu „ruchomego” tagu latest, który po prostu nie jest czymś, co VSCode bierze pod uwagę (osobista opinia).


Alternatywnie możesz uniknąć tego problemu, używając wiersza poleceń i ręcznie wprowadzając git pullpolecenie. W szczególności musisz --tagspominąć ten krok procesu.

Jeśli to zrobisz, Twoje tagi nie zostaną zaktualizowane - ale nie sądzę, żeby było to problemem.

Vlad274
źródło
Wielkie dzięki. Musiałem zaktualizować VSCodium, ale potem zadziałało. Myślę, że mógłbym też pozbyć się lokalnego tagu?
Skeeve
1
zobacz moją odpowiedź poniżej
Tuan Tran