Am besten an einem Beispiel zu erklären: Ich bin in Zweigstelle 0.58 des Repositorys und so ziehe ich:
git pull origin 0.58
Wenn ich nur "git pull" nenne, bekomme ich:
ip238:openlierox az$ git pull
You asked me to pull without telling me which branch you
want to merge with, and 'branch.0.58.merge' in
your configuration file does not tell me either. Please
name which branch you want to merge on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details on the refspec.
If you often merge with the same branch, you may want to
configure the following variables in your configuration
file:
branch.0.58.remote = <nickname>
branch.0.58.merge = <remote-ref>
remote.<nickname>.url = <url>
remote.<nickname>.fetch = <refspec>
See git-config(1) for details.
Scheint, als hätte ich wahrscheinlich eine Option (--track?) Vergessen, als ich diesen Zweig ausgecheckt habe. Jedenfalls habe ich das jetzt eingestellt:
git config branch.0.58.merge 0.58
git config branch.0.58.remote origin
Und das scheint zu funktionieren. Dann habe ich mir aus Interesse einen anderen Zweig über diese Einstellung angesehen:
ip238:openlierox az$ git config branch.0.57.merge
refs/heads/0.57
ip238:openlierox az$ git config branch.0.57.remote
origin
Ich habe mich jetzt gefragt, gibt es einen Unterschied zwischen "0,58" oder sollte ich "refs / Heads / 0,58" angeben?
Was ist der Unterschied genau?
heads
mit einem „s“.Antworten:
A
ref
ist alles, was auf ein Commit hinweist, z. B. Zweige (Köpfe), Tags und entfernte Zweige. Sie sollten Köpfe, Fernbedienungen und Tags in Ihrem.git/refs
Verzeichnis sehen, vorausgesetzt, Sie haben alle drei Arten von Refs in Ihrem Repository.refs/heads/0.58
Gibt einen Zweig mit dem Namen 0,58 an. Wenn Sie nicht angeben, in welchem Namespace sich die Referenz befindet, wird git in den Standardnamen angezeigt. Dies macht die Verwendung von nur 0,58 möglicherweise mehrdeutig - Sie könnten sowohl einen Zweig als auch ein Tag mit dem Namen 0,58 haben.quelle
refs/heads/
undrefs/remotes/
undrefs/tags/
Nur für jemanden, der neugierig ist -
git show-ref
der seit Git v1.8.2.2 verfügbar ist - zeigt Ihnen alle Referenzen, die Sie in Ihrem lokalen Repository haben.quelle
git log --decorate=full
werden die vollständigen Namen der Referenzen in der GeschichteSehen Sie,
branchName
muss vollständig gelöst werden, bevor GIT es tatsächlich identifizieren kann. Der vollständig aufgelöste Name lautetrefs/heads/branchName
.Einer der berühmten Befehle
git checkout branchName
löst ihn automatisch vollständig auf, um festzustellen, wo Sie auschecken möchten. Beachten Sie, dass dies automatisch geschieht, sodass wir es niemals vollständig selbst schreiben.Wie macht es das? Schauen wir hier
Mit den obigen 6 Schritten wird versucht, das Problem zu lösen
branchName
. Daher müssen wir ihm niemals einen vollständig aufgelösten Branchennamen geben.Schau hier und hier auch.
Gehen Sie auch in Ihr
.git
Verzeichnis und sehen Sie in denref
Ordner.quelle