2015-05-10 12 views
5

Próbowałem przenieść zmiany z góry do mojego widelca. Próbowałem git fetch https://github.com/someuser/someproject, ale uparcie odmawiał zrobienia czegokolwiek. To właśnie powiedział coś zupełnie tajemniczy i nic nie zrobił, a mianowicie:Jaka jest różnica między "git fetch <url>" i "git add remote upstream <url>", a następnie "git fetch upstream"?

From https://github.com/someuser/someproject 
* branch   HEAD  -> FETCH_HEAD 

Ale moment, dodałem URL jako nazwanego odległych rzeczy zmieniło:

> git remote add upstream https://github.com/someuser/someproject.git 
> git fetch upstream 
remote: Counting objects: 340, done. 
remote: Compressing objects: 100% (268/268), done. 
remote: Total 340 (delta 145), reused 18 (delta 16), pack-reused 44 
... etc ... 

Więc co za różnica? Dlaczego nie zrobił nic, gdy określiłem pilota bez jego wcześniejszego dodania? I co dokładnie mi mówiono, gdy próbowałem pobrać z adresu URL?

+1

Czy jesteś pewien, że to nie zadziałało? Czy próbowałeś sprawdzić lub połączyć magiczny odnośnik o nazwie "FETCH_HEAD"? –

+0

@RetoAebersold Tak. Próbowałem jeszcze raz: wyczyść klon, a następnie pobranie (natychmiastowe), a następnie próbowałem "git checkout ", który jest tam - "nie pasował". Potem zrobiłem "remote add", "fetch upstream" (tym razem trwa to chwilę), a następnie 'checkout ' ponownie - dostałem odłączoną głowę zgodnie z oczekiwaniami. –

Odpowiedz

1

Nie jestem ekspertem w tej dziedzinie, więc użyłem Google'a i the man pages, aby ułatwić sobie pracę nad tym, co się dzieje.

This question powinien demistify aspekt FETCH_HEAD rzeczy. Nie jestem w stanie powiedzieć, jaki jest stan twojego repozytu od przeczytania twojego pytania, ale prawdopodobnie twój FETCH_HEAD wskazuje na ostatnie zatwierdzenie w HEAD w zdalnym repo, cokolwiek by się stało. Prawdopodobnie masz już te zatwierdzenia w systemie, więc wszystkie git to aktualizacja FETCH_HEAD. Prawdopodobnie chcesz zamiast tego podać oddział.

Po dodaniu pilota uzyskujesz dodatkowe funkcje, takie jak domyślne gałęzie i zdalne śledzenie oddziałów. Wierzę, że twoje drugie polecenie działa inaczej, ponieważ git wykorzystuje pewną niejawną logikę do robienia tego, co zwykle jest potrzebne. Pobieranie bezpośrednio z adresu URL jest bardziej zaawansowanym posunięciem, przez co uzyskuje się mniej założeń.

Morał z opowieści, jeśli chcesz, żeby rzeczy po prostu działały, dodaj pilota. W przeciwnym razie przygotuj się, by zmagać się z bardziej szczegółowymi informacjami.

Powiązane problemy