Kann jemand einen "Tracking-Zweig" erklären, wie er für Git gilt?
Hier ist die Definition von git-scm.com :
Ein 'Tracking-Zweig' in Git ist ein lokaler Zweig, der mit einem Remote-Zweig verbunden ist. Wenn Sie diesen Zweig drücken und ziehen, wird er automatisch an den Remote-Zweig gedrückt und gezogen, mit dem er verbunden ist.
Verwenden Sie diese Option, wenn Sie immer von demselben Upstream-Zweig in den neuen Zweig ziehen und "git pull" nicht explizit verwenden möchten.
Leider macht diese Definition für mich absolut keinen Sinn, da ich neu in Git bin und von SVN komme.
Ich lese gerade " The Pragmatic Guide to Git " (übrigens ein großartiges Buch) durch und sie scheinen darauf hinzudeuten, dass das Verfolgen von Zweigen eine gute Sache ist und dass Sie dies nach dem Erstellen Ihrer ersten Fernbedienung (in diesem Fall Ursprung) tun sollten Richten Sie Ihren Hauptzweig als Tracking-Zweig ein, aber es wird leider nicht behandelt, warum ein Tracking-Zweig eine gute Sache ist oder welche Vorteile Sie erhalten, wenn Sie Ihren Master-Zweig als Tracking-Zweig Ihres Ursprungs-Repositorys einrichten .
Kann mich bitte jemand aufklären (auf Englisch)?
quelle
--track
Option können Sie einen (lokalen) Zweig erstellen, für den einer dieser Fernverfolgungszweige als Upstream festgelegt ist . Die Terminologie hat sich zwischen 2006 und 2019 etwas weiterentwickelt, so dass unterschiedliche Personen manchmal mit jedem dieser Wörter etwas anderes meinen können .origin/master
: sie in Ihrem Repository sind, aber sie sind Ihre Git Weg des Erinnerns Zweig Namen wie in einigen gesehen andere über im Git - Repositoryorigin
. Wenn Sie dann das Wort stromaufwärts , die der moderneren Begriff ist, zu sagen , dass Siemaster
hatorigin/master
als gesetzt Upstream , können Sie all diese Terminologie Verwirrung vermeiden.Antworten:
Das ProGit-Buch hat eine sehr gute Erklärung :
Verfolgen von Zweigen
Durch das Auschecken eines lokalen Zweigs aus einem Remote-Zweig wird automatisch ein sogenannter Tracking-Zweig erstellt. Tracking-Zweige sind lokale Zweige, die eine direkte Beziehung zu einem Remote-Zweig haben. Wenn Sie sich in einem Tracking-Zweig befinden und diesen eingeben
git push
, weiß Git automatisch, auf welchen Server und Zweig Sie pushen müssen. Wenn Siegit pull
in einem dieser Zweige ausgeführt werden, werden alle Remote-Referenzen abgerufen und dann automatisch in den entsprechenden Remote-Zweig eingefügt.Wenn Sie ein Repository klonen, wird im Allgemeinen automatisch ein Master-Zweig erstellt, der den Ursprung / Master verfolgt. Das ist der Grund
git push
undgit pull
funktioniert ohne weitere Argumente. Sie können jedoch auch andere Verfolgungszweige einrichten, wenn Sie dies wünschen - solche, die keine Zweige am Ursprung verfolgen und den Hauptzweig nicht verfolgen. Der einfache Fall ist das Beispiel, das Sie gerade gesehen habengit checkout -b [branch] [remotename]/[branch]
. Wenn Sie Git Version 1.6.2 oder höher haben, können Sie auch die--track
Kurzform verwenden:Um einen lokalen Zweig mit einem anderen Namen als den Remote-Zweig einzurichten, können Sie problemlos die erste Version mit einem anderen lokalen Zweignamen verwenden:
Jetzt wird Ihre lokale Niederlassung
sf
automatisch zu und von dort ziehenorigin/serverfix
.BONUS: zusätzliche
git status
InformationenMit einem Tracking-Zweig
git status
erfahren Sie, wie weit Sie hinter Ihrem Tracking-Zweig zurückliegen - nützlich, um Sie daran zu erinnern, dass Sie Ihre Änderungen noch nicht vorgenommen haben! Es sieht aus wie das:oder
quelle
Im Folgenden finden Sie meine persönlichen Lernnotizen zu GIT-Tracking-Zweigen. Hoffentlich ist dies für zukünftige Besucher hilfreich:
Tracking von Zweigen und "Git Fetch":
quelle
Das Pro Git-Buch erwähnt :
Nicht genau. Die SO-Frage " Schwer zu verstehen
git-fetch
" beinhaltet:Aber tatsächlich, sobald Sie eine vorgelagerte Verzweigungsbeziehung hergestellt haben zwischen:
master
origin/master
Dann können Sie
master
als lokaler Tracking-Zweig betrachten : Er verfolgt den Remote-Tracking-Zweigorigin/master
, der wiederum den Hauptzweig des Upstream-Repos verfolgtorigin
.quelle
git status
erhalte ich eine Commit-Tracking-Nachricht in Bezug auf Origin- und Upstream-Repos? (Einrichtung: Ich habe das Repo einer Person lokal geklont, meinen Klon auf ein neues Repo in meinem GitHub-Konto verschoben und den Ursprung und die Upstream-Fernbedienungen lokal für mein Github-Repo bzw. das geklonte geklonte Repo festgelegt.)Auf diese Weise habe ich einen Tracking-Zweig hinzugefügt, damit ich ihn in meinen neuen Zweig ziehen kann:
quelle