Es gibt keine Tracking-Informationen für den aktuellen Zweig

581

Ich habe Github seit relativ kurzer Zeit verwendet und den Client immer zum Ausführen von Commits und Pulls verwendet. Ich habe mich gestern entschlossen, es von der Git-Bash aus zu versuchen, und ich habe erfolgreich ein neues Repo und festgeschriebene Dateien erstellt.

Heute habe ich Änderungen am Repository von einem anderen Computer aus vorgenommen. Ich habe die Änderungen festgeschrieben. Jetzt bin ich wieder zu Hause und habe eine git pullAktualisierung meiner lokalen Version durchgeführt. Ich erhalte Folgendes:

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>

Der einzige Mitwirkende an diesem Repo bin ich und es gibt keine Zweige (nur einen Meister). Ich bin auf Windows und habe den Pull-from-Git-Bash ausgeführt:

Geben Sie hier die Bildbeschreibung ein

Git-Status:

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

Git-Zweig:

$ git branch
* master

Was mache ich falsch?

valerio0999
quelle
Okay, wie wäre es mit einem git remote -v? Was steht da?
Criswell
Mögliches Duplikat des Git Checkout-Tags, Git Pull schlägt in Branch fehl
rjmunro
Sie können diesen Fehler auch erhalten, wenn Sie bei der Ausführung keine CD in das geklonte Repo-Verzeichnis verschoben haben git pull.
Victoria Stuart
Mit Git 2.24 ist Q4 2019 git pull --set-upstream-to=origin/master mastermöglich. Siehe meine Antwort unten
VonC

Antworten:

950

Sie können angeben, welchen Zweig Sie ziehen möchten:

git pull origin master

Oder Sie können es so einrichten, dass Ihr lokaler Hauptzweig den Github-Hauptzweig als Upstream verfolgt:

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

Diese Zweigstellenverfolgung wird automatisch für Sie eingerichtet, wenn Sie ein Repository klonen (nur für die Standardverzweigung). Wenn Sie jedoch einem vorhandenen Repository eine Fernbedienung hinzufügen, müssen Sie die Verfolgung selbst einrichten. Zum Glück macht es der Rat von git ziemlich einfach, sich daran zu erinnern, wie es geht.

ComputerDruide
quelle
3
perfekt! es funktionierte. Was ist also passiert, dass es keinen "Standardzweig" für einen Standard "Git Pull" gab? Deshalb gab es den Fehler?
Valerio0999
16
--set-upstream ist in git 1.9.x anscheinend veraltet. In Zukunft möchten Sie so etwas wie verwenden git branch -u origin/master, vorausgesetzt, Sie haben den Master bereits ausgecheckt. Wenn nicht, git branch -u origin/master masterwird funktionieren.
Bart Read
5
@BartRead hat es aktualisiert, um die neue klarere --set-upstream-to=Syntax zu verwenden. (was der Ersatz für ist --set-upstream)
ComputerDruid
61
Dies scheint ein trauriger Zustand zu sein. Müssen wir dies wirklich für jeden Zweig manuell einstellen? Warum können wir nicht einfach origin als Standardfernbedienung festlegen und dann jeden Push / Pull-Standard für den Zweig am Ursprung mit demselben Namen festlegen? ist das so schwer
Alexander Mills
4
Ah, der entscheidende Teil für mich hier war, dass, wenn Sie eine Fernbedienung ablegen und neu erstellen, das vom Original eingerichtete Tracking fetchverloren gegangen ist. Daher die Notwendigkeit, es erneut einzurichten. :)
Ben
42

Siehe: Git Checkout-Tag, Git Pull schlägt in der Verzweigung fehl

Wenn Sie dies wie ich ständig tun müssen, können Sie einen Alias ​​einrichten, um dies automatisch zu tun, indem Sie Ihrer .gitconfigDatei Folgendes hinzufügen :

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

Wenn Sie die Nachricht sehen There is no tracking information..., führen Sie Folgendes aus:

 git set-upstream
 git push

Vielen Dank an https://zarino.co.uk/post/git-set-upstream/

rjmunro
quelle
1
Hier ist eine Möglichkeit, es .gitconfigin einer Zeile zur globalen hinzuzufügen (kann für lokale oder andere Konfigurationen entsprechend geändert werden):git config --global alias.set-upstream '!git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
Danny Bullis
17

Die Antwort von ComputerDruid ist großartig, aber ich denke nicht, dass es notwendig ist, den Upstream manuell einzurichten, es sei denn, Sie möchten. Ich füge diese Antwort hinzu, weil die Leute vielleicht denken, dass dies ein notwendiger Schritt ist.

Dieser Fehler wird behoben, wenn Sie die Fernbedienung angeben, die Sie wie folgt ziehen möchten:

git pull origin master

Beachten Sie, dass dies originder Name der Fernbedienung und der Name des masterZweigs ist.


1) So überprüfen Sie den Namen der Fernbedienung

git remote -v

2) So sehen Sie, welche Zweige im Repository verfügbar sind.

git branch -r
Aerin
quelle
1
Beste Antwort für mich, Danke!
Bahman.A
7

Ich stoße oft auf genau diese Nachricht, weil ich über eine lokale Verzweigung erstelle, git checkout -b <feature-branch-name>ohne zuerst die entfernte Verzweigung zu erstellen.

Nachdem alle Arbeiten abgeschlossen und lokal festgeschrieben wurden, wurde durch den Fix git push -uder Remote-Zweig erstellt, meine gesamte Arbeit übertragen und anschließend die URL für die Zusammenführungsanforderung.

Ron Reynolds
quelle
1
Für das, was es wert ist, musste ich laufen git push -u origin <my-feature-branch-name>, um den Remote-Zweig zu erstellen und meine Arbeit
voranzutreiben
6

Ich habe die obigen Beispiele ausprobiert und konnte sie nicht mit einem (Nicht-Master-) Zweig synchronisieren, den ich auf einem anderen Computer erstellt hatte. Als Hintergrund habe ich dieses Repository auf Computer A (git v 1.8) erstellt und dann das Repository auf Computer B (git 2.14) geklont. Ich habe alle meine Änderungen an Comp B vorgenommen, aber als ich versuchte, die Änderungen auf den Computer zu übertragen, konnte AI dies nicht und bekam den gleichen Fehler wie oben. Ähnlich wie bei den obigen Lösungen musste ich Folgendes tun:

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

etwas anders, hilft aber hoffentlich jemandem

imapotatoe123
quelle
Das hat bei mir funktioniert; Ich habe auch einen Nicht-Master-Zweig verwendet, der auf einem anderen Computer eingerichtet wurde. Mit diesem Befehl in Git Bash konnte ich dann meine Änderungen erhalten :)
Novastorm
3

1) git branch --set-upstream-to = origin / <master_branch>feature /<your_current_branch>

2) Git Pull

MERLIN THOMAS
quelle
1

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

$ git pull

hat für mich gearbeitet!

Mai Dias
quelle
1

Das gleiche passierte mir schon früher, als ich einen neuen Git-Zweig erstellte, ohne ihn zum Ursprung zu bringen.

Versuchen Sie zuerst, diese beiden Zeilen auszuführen:

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

Dann:

git pull origin name_of_new_branch

Es sollte jetzt gut sein!

Newt
quelle
1

Dies liegt daran, dass der aktuelle Zweig keine Verfolgung für den Zweig auf der Fernbedienung hat. Sie können es also auf zwei Arten tun.

  1. Mit einem bestimmten Filialnamen ziehen

Git Pull Origin Master

  1. Oder Sie können einen bestimmten Zweig verwenden, um den lokalen Zweig zu verfolgen.

Git-Zweig --set-upstream-to = Ursprung /

KR93
quelle
0

Git-Zweig --set-upstream-to = Ursprung / Haupt

Amir Hussain
quelle
2
Es ist immer hilfreich, Ihrer Antwort eine Erklärung hinzuzufügen, um sie klarer und verständlicher zu machen. Bitte lesen Sie stackoverflow.com/help/how-to-answer .
32cupo
1
Zusätzlich zu @ 32cupos Punkt entspricht dies im Wesentlichen der akzeptierten Antwort des Fünfjährigen, jedoch mit weniger Erklärung.
Jeremy Caney