2012-04-13 6 views
126

ich eine Git-Repository geklont und dann einen Tag ausgecheckt:git checkout Tag, Git-Pull-Ausfall in Zweig

# git checkout 2.4.33 -b my_branch 

Das ist in Ordnung, aber wenn ich versuche git pull in meinem Zweig zu laufen, git spuckt dieser Fehler:

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 new origin/<branch> 

ich git pull will den Master-Zweig nur zu aktualisieren und zu meinem aktuellen Zweig allein lassen (es ist ein Tag sowieso). Ist so etwas möglich?

Der Grund, warum ich brauche ist, dass ich einen automatischen Skript haben, die immer git das Repository und natürlich zieht nicht wegen der Fehler, der oben ..

+0

Mögliche Duplikat von [git Pull: Es gibt keine Tracking-Informationen für die aktuelle Branche] (http://StackOverflow.com/Questions/32056324/Git-Pull-there-ISNO- Tracking-Information-für-den-aktuellen-Zweig) – daisy

Antwort

103

Edit: Für neuere Versionen von Git, --set-upstream master veraltet ist, sollten Sie --set-upstream-to stattdessen verwenden :


Wie es dazu aufgefordert werden, können Sie einfach laufen:

git branch --set-upstream master origin/master 

Danach werden Sie einfach git pull ausführen können Sie den Code zu aktualisieren.

+4

Dies löste das Problem. Aber ich muss immer noch verstehen, wie mein Meisterzweig den Bezug zur Herkunft verloren hat. Ich war auf einem Ast und habe 'check checkmaster'. Ich konnte nicht "ziehen", weil der Bezug zur Herkunft verloren ging. Jetzt funktioniert es. Vielen Dank! – Ariel

6

Wechseln Sie zurück zum Hauptzweig mit

$ git checkout master 

und führen Sie dann den git pull Betrieb

$ git pull origin/master 

danach können Sie wieder zu Ihrem my_branch wechseln.

+6

Genau das versuche ich zu vermeiden. Ich wollte wissen, ob es einen "offiziellen" Weg gibt. – alesko

0

Um nur Updates herunterladen:

git fetch origin master 

Doch dieses Updates nur einen Verweis origin/master genannt. Der beste Weg, um Ihre lokale master zu aktualisieren wäre die Kasse/Zusammenführung in einem anderen Kommentar erwähnt. Wenn können Sie garantieren, dass Ihre lokalen master nicht vom Hauptstamm abwich, die origin/master eingeschaltet ist, Du könnte Verwendung git update-ref Ihre aktuellen master zum neuen Punkt auf der Karte, aber das ist wahrscheinlich nicht die beste Lösung für eine zu verwenden regelmäßig ...

90

hatte ich das gleiche Problem und fixiert es mit diesem Befehl:

$ git push -u origin master 

aus der Hilfedatei setzt die -u im Grunde die Standardeinstellung für Pulls:

-u, --set-upstream` 

    For every branch that is up to date or successfully pushed, add 
    upstream (tracking) reference, used by argument-less git-pull(1) and 
    other commands. For more information, see branch.<name>.merge in 
    git-config(1). 
5

@alesko: es ist nicht möglich, nur git pull nach der Kasse my_branch zu aktualisieren, nur master Zweig zu aktualisieren. dass auch den Push tun:> in Ihrem Szenario an die my_branch

@Simon -
Da git pull wird auch auf den aktuellen Zweig zusammenführen. Warum das?

$ git branch -u origin/master 
Branch master set up to track remote branch master from origin. 

und Acording zu docs:

-u <upstream> 
    Set up <branchname>'s tracking information so <upstream> is considered 
    <branchname>'s upstream branch. If no <branchname> is specified, 
    then it defaults to the current branch. 
47

diese Befehle Versuchen:

git pull origin master 
git push -u origin master 
4

Zuerst, stellen Sie sicher, dass Sie auf der rechten Seite sind.
Dann (einmalig):

git branch --track 

Danach das funktioniert wieder:

git pull 
1

Sie benötigen Tracking (upstream) für den aktuellen Zweig einzurichten

git branch --set-upstream master origin/master 

Ist bereits veraltet, statt dessen können Sie --track flag

verwenden

ich wie die doc Referenz auch, dass @casey Hinweis:

-u <upstream> 
    Set up <branchname>'s tracking information so <upstream> is considered 
    <branchname>'s upstream branch. If no <branchname> is specified, 
    then it defaults to the current branch. 
1

Was für mich gearbeitet wurde: git branch --set-Upstream-to = origin master Wenn ich einen Zug war wieder nur ich bekam die Updates vom Master und die Warnung ging weg.

4

Sie könnten mehrere Zweige haben. Und Ihr aktueller Zweig hat seinen Upstream nicht in der Ferne eingestellt.

Schritte dieses Problem zu beheben:

git checkout branch_name 
git branch --set-upstream-to=origin/remote_branch_name local_branch_name 

z.B.

// this set upstream of local branch develop to remote branch origin/develop, 
git branch --set-upstream-to=origin/develop develop 

Nachdem dies zu tun, wenn Sie git pull tun, ist es aus bestimmten Zweig ziehen.

2

Versuchen Sie, diese

git checkout master 

git pull origin master 
+2

Dies beantwortet nicht wirklich die Frage. Auch wenn es keine akzeptierte Antwort gibt, ist die erste Wahl viel passender als Antwort auf diese alte Frage – fejese

0

Dieser Befehl ist veraltet: git branch --set-upstream master origin/master

Also, wenn einzurichten Tracking versuchen, dies ist der Befehl, der für mich gearbeitet:

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

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

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

Wenn Sie die Nachricht There is no tracking information... sehen, führen Sie einfach git set-upstream, dann git push wieder.

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

1

Sie können angeben, welche Filiale Sie ziehen wollen:

git pull origin master 

Oder Sie könnten es so einrichten, dass Ihre lokalen Hauptzweigspuren Github master-Zweig als vorgeschalteter:

Diese Zweigverfolgung wird automatisch für Sie eingerichtet, wenn Sie ein Repository klonen (nur für den Standardzweig), aber wenn Sie einen Remote zu einem hinzufügen vorhandenes Repository müssen Sie das Tracking selbst einrichten. Glücklicherweise macht der Rat von git das ziemlich einfach, sich daran zu erinnern, wie man es macht.

--set-upstream ist in git 1.9.x offenbar veraltet. In Zukunft würden Sie wollen etwas verwenden, wie

git branch -u origin/master 

vorausgesetzt, Sie haben bereits Meister ausgecheckt. Wenn nicht, git branch -u origin/master master funktioniert