2013-05-21 13 views
48

Obecnie mam git zdalnej konfiguracji jak poniżej:Pobieranie wszystkie znaczniki z pilotem z git ciągnąć

[remote "upstream"] 
    url = <redacted> 
    fetch = +refs/heads/*:refs/remotes/upstream/* 

Kiedy wydawać git pull na gałąź master, wszystkie zdalne głowice są naciągane na piloty/upstream, a następnie piloty/upstream/master jest połączone w master. Wszystkie znaczniki, które można osiągnąć, są również pobierane w tym samym czasie, co jest bardzo wygodne.

Chciałbym git pull, aby dodatkowo pobrać wszystkie tagi z pilota, a nie tylko te, które są bezpośrednio dostępne z głów. Początkowo próbowałem ustawić tagopt == --tags, ale okazało się, że spowodowało to pobranie tylko znaczników i tym samym zepsuło wszystko. (Junio ​​mówi nawet, że to jest horrendous misconfiguation).

Czy istnieje sposób, aby git pull pobrać wszystkie zdalne znaczniki domyślnie, oprócz głowic zdalnych?

+0

Przypomnienie sobie: Upewnij się, że rzeczywiście pchnął tag pierwszy (nie działa automatycznie): 'git push origin ' – Hafenkranich

+0

Użycie rozwiązania' tagopt' nie jest już błędną konfiguracją; [od 1.9/2.0 (Q1 2014)] (https://stackoverflow.com/a/20608181) spowoduje to pobranie wszystkich tagów * dodatkowo * do tego, co normalnie jest pobierane. – mgiuffrida

Odpowiedz

44

Powinieneś być w stanie to osiągnąć, dodając refspec dla znaczników do lokalnej konfiguracji. Konkretnie:

[remote "upstream"] 
    url = <redacted> 
    fetch = +refs/heads/*:refs/remotes/upstream/* 
    fetch = +refs/tags/*:refs/tags/* 
+1

Aha, nigdy nie zdawałem sobie sprawy, że możesz mieć wiele linii do pobierania, przypuszczałem, że ostatnia z nich będzie po prostu przesłonić. To bardzo miłe i wyraźne. – jleahy

99

Dla mnie pracował prosty git fetch --tags.

+1

Nie zapewnia to odpowiedzi na pytanie.Aby skrytykować lub poprosić o wyjaśnienie od autora, pozostaw komentarz pod swoim postem. – Fizzix

+6

@Fizzix Być może tytuł powinien zostać zmieniony, aby zawierał "domyślnie". Ten wpis odpowiedział na moje pytanie. –

+0

To nie działa dla mnie. Widzę znaczniki za pomocą 'git ls-remote'. – dangeroushobo

12

Opcja --force jest przydatna do odświeżenia lokalne tagi. Głównie jeśli masz pływających tagi: opcja ciągnąć

git fetch --tags --force 

git posiada również opcje --force, a opis jest taka sama:

Kiedy git pobieraniu jest używany: refspec, odmawia zaktualizuj lokalny oddział, chyba że zdalny oddział , który pobiera, jest potomkiem. Ta opcja zastępuje sprawdzanie .

ale według DOC --no-tags:

Domyślnie znaczniki, które wskazują na przedmioty, które są pobierane ze zdalnego repozytorium są pobierane i przechowywane lokalnie.

Jeśli to stwierdzenie domyślna nie jest ograniczeniem, można także spróbować

git pull --force 
Powiązane problemy