Jak usunąć referencję git `refs / original / refs / heads / master`?


35

Co to jest w żółtym okrągłym pudełku?

zrzut ekranu

Próbowałem git branch -D, git tag -dale nie udało się. Jak to usunąć?


1
Proszę rozważyć zmianę zaakceptowanej odpowiedzi na odpowiedź Alexey Ten, która jest wysoko oceniona i poprawna ( git update-ref -d).
Jonathon Reinhart

Odpowiedzi:


11

Wygląda jak znacznik, więc następujące polecenie powinno działać:

git tag -d refs/original/refs/heads/master

Ale ponieważ powiedziałeś, że tak nie jest, możesz po prostu usunąć plik z .gitkatalogu. Z katalogu głównego repozytorium takie polecenie otrzyma:

rm .git/refs/tags/refs/original/refs/heads/master

Ścieżka może być nieco inna, jeśli git-tagpolecenie się nie powiedzie, więc możesz chcieć cd .git/refsi znaleźć obrażającą głowę metodą prób i błędów. Usunięcie pliku spowoduje usunięcie odwołania z lokalnego repozytorium.


2
To nie jest tag, jednak znalazłem go jako .git/refs/original/refs/heads/master.
Xiè Jìléi

1
Użyj git update-refzamiast ręcznie modyfikować wewnętrzne elementy Gita. Zobacz odpowiedź Alexeya.
wchargin

100

To polecenie powinno działać

git update-ref -d refs/original/refs/heads/master

To zadziałało dla mnie z tym samym problemem. Zauważ, że referencja została zapisana w pliku o nazwie .git /pack-refs. Jeśli to otworzysz, zobaczysz wiersz z SHA i ciąg „refs / original / refs / heads / master”. Prawdopodobnie możesz usunąć tę linię, ale użyłbym tego polecenia, aby być bezpiecznym.
Matt N

14
+1: Należy zawsze używać git update-ref -dzamiast tylko rming ref - złe rzeczy mogą się zdarzyć inaczej.
Callum Rogers

3
To powinna być zaakceptowana odpowiedź
Daniel Alder

1
@CallumRogers dlaczego?
wahnfrieden,

6
@wahnfrieden, ponieważ git mógłby użyć spakowanych referencji i nie będzie odpowiedniego pliku w refskatalogu
Alexey Ten

17

To jest ref. Zwykle tworzony przez git filter-branch- jest wskaźnikiem do miejsca, w którym znajdowała się twoja gałąź przed uruchomieniem git filter-branch.

Aby usunąć dowolne odwołanie, zawsze możesz wcisnąć do niego nic w lokalnym repozytorium:

git push . :refs/original/refs/heads/master

Pozostałe odpowiedzi obejmowały również całkiem inne sposoby usuwania.


1
„Naciśnięcie niczego”, aby usunąć odwołanie lokalnie, jest bardzo sprytne.
40XUserNotFound

Zrobił mi dzień. Miałem odniesienie do zdalnego tagu, że pilot już nie istnieje. To jedyne polecenie, które zadziałało.
RW4
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.