Brak informacji o śledzeniu dla bieżącego oddziału


579

Używam github od stosunkowo krótkiego okresu i zawsze używałem klienta do wykonywania zatwierdzeń i wyciągnięć. Postanowiłem wypróbować go wczoraj z git bash i pomyślnie utworzyłem nowe repo i zatwierdzone pliki.

Dzisiaj zrobiłem zmiany w repozytorium z innego komputera, zatwierdziłem zmiany i teraz wróciłem do domu i wykonałem git pullaktualizację mojej wersji lokalnej i otrzymuję to:

There is no tracking information for the current branch.
    Please specify which branch you want to merge with.
    See git-pull(1) for details

    git pull <remote> <branch>

If you wish to set tracking information for this branch you can do so with:

    git branch --set-upstream develop origin/<branch>

jedynym uczestnikiem tego repozytorium jest ja i nie ma żadnych oddziałów (tylko master). Jestem na Windowsie i wykonałem ściąganie z git bash:

wprowadź opis zdjęcia tutaj

status git:

$ git status
# On branch master
nothing to commit, working directory clean

oddział git:

$ git branch
* master

Co ja robię źle?


Dobra, a może git remote -v? Co to mówi?
criswell


Ten błąd można również uzyskać, jeśli podczas wykonywania nie ma dysku CD w sklonowanym katalogu repo git pull.
Victoria Stuart,

Z Git 2.24, czwarty kwartał 2019 git pull --set-upstream-to=origin/master masterjest możliwy. Zobacz moją odpowiedź poniżej
VonC

Odpowiedzi:


948

Możesz określić gałąź, którą chcesz pobrać:

git pull origin master

Możesz też skonfigurować go tak, aby lokalna gałąź master śledziła gałąź github master jako upstream:

git branch --set-upstream-to=origin/master master
git pull

To śledzenie gałęzi jest konfigurowane automatycznie po sklonowaniu repozytorium (tylko domyślna gałąź), ale jeśli dodasz pilota do istniejącego repozytorium, musisz skonfigurować śledzenie samodzielnie. Na szczęście rada udzielona przez git ułatwia zapamiętanie, jak to zrobić.


3
doskonały! zadziałało. więc co się stało, czy nie było „domyślnej gałęzi” dla domyślnej „git pull”? dlatego wystąpił błąd?
valerio0999,

16
--set-upstream jest przestarzałe w git 1.9.x, najwyraźniej. Idąc dalej, chciałbyś użyć czegoś takiego git branch -u origin/master, zakładając, że już sprawdziłeś master. Jeśli nie, git branch -u origin/master masterzadziała.
Bart przeczytał

5
@BartRead zaktualizował go, aby używał nowej, bardziej przejrzystej --set-upstream-to=składni. (który zastępuje --set-upstream)
ComputerDruid

61
wydaje się to przykrym stanem rzeczy - czy naprawdę musimy to ustawić ręcznie dla każdej gałęzi? Dlaczego nie możemy po prostu ustawić źródła jako domyślnego zdalnego, a następnie mieć domyślnie każdy element push / pull w gałęzi o tej samej nazwie? czy to takie trudne?
Alexander Mills,

4
Ach, kluczową częścią dla mnie było to, że jeśli upuścisz i ponownie utworzysz pilota, wówczas śledzenie ustawione przez oryginał fetchzostanie utracone. Stąd potrzeba ponownej konfiguracji. :)
Ben

42

Zobacz: tag git checkout, git pull kończy się niepowodzeniem w gałęzi

Jeśli tak jak ja, musisz to robić cały czas, możesz ustawić alias, aby zrobić to automatycznie, dodając następujące elementy do swojego .gitconfigpliku:

[alias]
    set-upstream = \
       !git branch \
           --set-upstream-to=origin/`git symbolic-ref --short HEAD`

Po wyświetleniu komunikatu There is no tracking information...uruchom:

 git set-upstream
 git push

Dzięki https://zarino.co.uk/post/git-set-upstream/


1
Oto sposób, aby dodać go do globalnego .gitconfigw jednym wierszu (może być odpowiednio zmodyfikowany dla konfiguracji lokalnych lub innych):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis

17

Odpowiedź ComputerDruid jest świetna, ale nie sądzę, że konieczne jest ręczne ustawienie upstream, chyba że chcesz. Dodaję tę odpowiedź, ponieważ ludzie mogą pomyśleć, że to konieczny krok.

Ten błąd zniknie, jeśli określisz pilota, który chcesz wyciągnąć, jak poniżej:

git pull origin master

Zauważ, że originjest to nazwa pilota i masternazwa oddziału.


1) Jak sprawdzić nazwę pilota?

git remote -v

2) Jak sprawdzić, jakie gałęzie są dostępne w repozytorium.

git branch -r

1
Najlepsza odpowiedź dla mnie, dzięki!
Bahman.

7

Często napotykam ten dokładny komunikat, ponieważ tworzę lokalne oddziały git checkout -b <feature-branch-name>bez wcześniejszego tworzenia oddziału zdalnego.

Po tym, jak cała praca została zakończona i zatwierdzona lokalnie, wprowadzono poprawkę, git push -uktóra utworzyła zdalną gałąź, wypchnęła całą moją pracę, a następnie adres URL żądania scalenia.


1
za to, co jest warte, musiałem biec git push -u origin <my-feature-branch-name>, aby utworzyć zdalny oddział i pchnąć moją pracę
Donnie C

6

Próbowałem powyższych przykładów i nie mogłem ich zsynchronizować z gałęzią (inną niż master), którą utworzyłem na innym komputerze. W tle utworzyłem to repozytorium na komputerze A (git v 1.8), a następnie sklonowałem repozytorium na komputerze B (git 2.14). Dokonałem wszystkich zmian na komputerze B, ale kiedy próbowałem pobrać zmiany na komputer, AI nie było w stanie tego zrobić, otrzymując ten sam powyższy błąd. Podobnie do powyższych rozwiązań, musiałem zrobić:

git branch --set-upstream-to=origin/<my_repository_name> 
git pull

nieco inny, ale mam nadzieję, że komuś pomoże


To zadziałało dla mnie; Korzystałem również z gałęzi innej niż master, która została skonfigurowana na innym komputerze. Za pomocą tego polecenia w Git Bash udało mi się uzyskać moje zmiany :)
Novastorm,



3

1) Git Branch --set-upstream-to = origin / <master_branch>feature /<your_current_branch>

2) Git Pull


1

$ git branch --set-upstream-to=heroku/master master i

$ git pull

pracował dla mnie!


1

To samo zdarzyło mi się wcześniej, kiedy stworzyłem nową gałąź git, nie wypychając jej do źródła.

Najpierw spróbuj wykonać te dwa wiersze:

git checkout -b name_of_new_branch # create the new branch
git push origin name_of_new_branch # push the branch to github

Następnie:

git pull origin name_of_new_branch

Teraz powinno być dobrze!


1

Dzieje się tak, ponieważ bieżąca gałąź nie ma śledzenia na gałęzi na pilocie. więc możesz to zrobić na 2 sposoby.

  1. Wyciągnij z określoną nazwą oddziału

git pull master master

  1. Lub możesz określić konkretny oddział, aby śledzić oddział lokalny.

git branch --set-upstream-to = origin /


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.