Was bedeutet git --set-upstream
tun?
Ich habe versucht, es zu verstehen, indem ich die gelesen habe git-Handbuchaber ich habe es nicht ganz verstanden.
Евгений Масленков
Was bedeutet git --set-upstream
tun?
Ich habe versucht, es zu verstehen, indem ich die gelesen habe git-Handbuchaber ich habe es nicht ganz verstanden.
Der CodeKünstler
Um Verwirrung zu vermeiden,
neuere Versionen vongit
verachten Sie dies etwas mehrdeutig--set-upstream
Möglichkeit
zugunsten einer ausführlicheren--set-upstream-to
Möglichkeit
mit identischer Syntax und Verhalten.
[ Reference ]
git branch --set-upstream-to <remote-branch>
legt den standardmäßigen Remote-Zweig für den aktuellen lokalen Zweig fest.
Jede Zukunft git pull
Befehl (mit ausgecheckter aktueller lokaler Verzweigung),
wird versuchen, Commits von einzufügen <remote-branch>
in die jetzige Ortsgruppe.
Eine Möglichkeit, um zu vermeiden, explizit eingeben zu müssen --set-upstream
/ --set-upstream-to
ist, seine Kurzschrift-Flagge zu verwenden -u
wie folgt:
git push -u origin local-branch
Dadurch wird die Upstream-Zuordnung für alle zukünftigen Push/Pull-Versuche automatisch festgelegt.
Weitere Informationen finden Sie hier ausführliche Erklärung zu Upstream-Zweigen und Tracking.
Das Flag –set-upstream ist veraltet und wird entfernt. Erwägen Sie die Verwendung von –track oder –set-upstream-to
– Rohit Singh Sengar
9. März 2017 um 7:51 Uhr
in diesem Befehl git push -u origin local-branch
was bedeutet die origin
vertreten? Gibt es einen Fall, in dem ich etwas anderes als eingeben würde? origin
nach dem -u
?
– Johann Henckel
5. März 2018 um 19:02 Uhr
@ JohnHenckel origin
bezieht sich auf das entfernte Git-Repository, aus dem geklont wurde. Es kann geben mehrere Remote-Git-Repositories. In einem solchen Fall, origin
kann durch den richtigen Namen der gewünschten Fernbedienung ersetzt werden, auf die man sich beziehen möchte.
– TheCodeArtist
6. März 2018 um 5:57 Uhr
mach ein git remote -v
um Ihre Fernbedienungen zu finden, ist die Standardeinstellung origin
meistens
– xploreraj
7. August 2018 um 4:00 Uhr
Wille
Wenn Sie auf eine Fernbedienung drücken und die verwenden --set-upstream
flag git legt den Zweig, zu dem Sie pushen, als Remote-Tracking-Zweig des Zweigs fest, den Sie pushen.
Das Hinzufügen eines Remote-Tracking-Zweigs bedeutet, dass Git dann weiß, was Sie tun möchten, wenn Sie es tun git fetch
, git pull
oder git push
in der Zukunft. Es geht davon aus, dass Sie den lokalen Zweig und den Remote-Zweig, den es verfolgt, synchron halten möchten, und unternimmt die entsprechenden Maßnahmen, um dies zu erreichen.
Dasselbe könntest du mit erreichen git branch --set-upstream-to
oder git checkout --track
. Siehe die Git-Hilfeseiten auf Filialen verfolgen für mehr Informationen.
Wenn ich mit -t auschecke, wird der Upstream für das Drücken festgelegt, nur für das Ziehen.
– Jim
22. Februar 2019 um 16:38 Uhr
Diese Antwort geht davon aus, dass ein Zweig zu geschoben wird: D
– T. Woody
14. Januar 2021 um 5:37 Uhr
Steinbutt Alin
git branch --set-upstream <<origin/branch>>
wird offiziell nicht mehr unterstützt und durch ersetzt git branch --set-upstream-to <<origin/branch>>
Pijusch Singhania
--set-upstream
wird verwendet, um einen Zweig in Ihrem Lokal einem Zweig auf einem Remote-Branch zuzuordnen, sodass Sie einfach Git-Push oder Git-Pull ausführen können und wissen, von welchem Zweig Sie Push/Pull ausführen müssen
Zum Hinzufügen eines Remote-Repos verwende ich diese Befehle
git remote -v
git remote add upstream <URL>
git remote -v
Man kann mehrere Remotes zu seinem lokalen Repository haben und es kann mit den gleichen Befehlen oben hinzugefügt werden.
Ändern Sie einfach den Upstream-Namen git remote add NAME <URL>
Daniel K.
Ich gehe davon aus, dass Ihre Frage ist:
Was macht
git push --set-upstream <repository> <branchname>
tun?
Wie Sie sehen, bin ich davon ausgegangen, dass es sich um den fraglichen Git-Befehl handelt git push
. Ich hoffe, das hast du gemeint. Um die Antwort zu vereinfachen, habe ich weiter angegeben, dass der lokale Branch
Nachdem dies gesagt wurde, ist dies mein Antworten:
Zusätzlich zu der Operation, die a git push
ohne die Möglichkeit --set-upstream
tut, diese Option macht git push
einstellen mindestens zwei Konfigurationsvariablen:
Das ist alles, was dieser Befehl tut. Es speichert Upstream-Informationen (dh entferntes Repository und Zweig) für den lokalen Zweig in Konfigurationsvariablen.
Upstream-Informationen werden unter dem lokalen Zweignamen gespeichert. Wenn Ihre örtliche Niederlassung angerufen wird main
sind die jeweiligen Konfigurationsvariablen branch.main.remote
und branch.main.merge
. Basierend auf der Art und Weise, wie diese Upstream-Informationen gespeichert werden, kann eine lokale Niederlassung nicht mehr als einen einzigen Satz von Upstream-Informationen haben.
Ob eine dieser Konfigurationsvariablen gesetzt ist, können Sie mit abfragen git config --get-regexp ^branch\.
. Dadurch werden alle Variablen ausgegeben, die mit „branch“ beginnen.
Die Magie passiert, wenn diese Konfigurationsvariablen verwendet werden, z. B. von git fetch
, git pull
oder git push
um das Upstream-Repository und den Remote-Zweig für einen lokalen Zweig herauszufinden, wenn Sie sie nicht explizit in der Befehlszeile angeben. Das heißt, wenn diese Konfigurationsvariablen gesetzt sind, können Sie einfach ausgeben git push
und git wird (unter Verwendung dieser Variablen) das zu verwendende entfernte Repository und den Upstream-Zweig kennen.
Empfohlene weiterführende Lektüre:
Aber achten Sie auf Git-Macken:
Wenn
git push --set-upstream [email protected]:namespace/myproject.git master
git push
erstellt keinen Verweis auf den Remote-Zweigkopf in .git/refs/remotes/<repository>
Nur wenn das Upstream-Repository mit benannt wurde
git remote add <repository> <URL>
und git push --set-upstream
mit diesem Namen verwendet wurde, ist die volle Leistung von Remote-Tracking-Branches in allen Git-Befehlen verfügbar.
Empfohlene weiterführende Lektüre:
FYI: alle Befehle mit git V2.32 unter Windows getestet.
Ich mag diese Antwort, sie ist sehr detailliert. Danke @DanielK
– 1vand1ng0
18. September 2021 um 9:34 Uhr
VonC
--set-upstream
geht es nicht nur darum git branch -u
oder git push -u
.
Sie haben auch git fetch --set-upstream
und git pull --set-upstream
.
Wenn die Fernbedienung erfolgreich abgerufen wurde, fügen Sie eine Upstream-(Verfolgungs-)Referenz hinzu, die von argumentlos verwendet wird
git pull
und andere Befehle
Es wird eingestellt:
branch.<name>.remote
branch.<name>.merge
Das wird es erlauben git push
wissen wo zu schieben, und zu zu welchem Remote-Zweig gepusht werden soll.
Aber: “git fetch --set-upstream
“(Mann) hat nicht geprüft, ob es einen aktuellen Zweig gibt, was zu a führt Segmentfehler wenn es auf a ausgeführt wird abgetrennter KOPFdie mit Git 2.35 (Q1 2022) korrigiert wurde.
Sehen 17baeaf begehen (07.12.2021) von Ævar Arnfjörð Bjarmason (avar
).
(Zusammengeführt von Junio C. Hamano — gitster
— in dcaf17c übergeben22. Dez. 2021)
pull, fetch
: Segfault in der Option –set-upstream behobenBerichterstatter: Clemens Fruhwirth
Berichtet von: Jan Pokorný
Unterzeichnet von: Ævar Arnfjörð Bjarmason
Beheben Sie einen Segfault in der
--set-upstream
Option hinzugefügt 24bc1a1 (Pull, 19.08.2019, Git v2.24.0-rc0 — verschmelzen gelistet in Charge Nr. 2) (ziehen, holen:add
(Mann)--set-upstream
Option, 19.08.2019) hinzugefügt in v2.24.0.Der dort hinzugefügte Code führte nicht die gleiche Überprüfung durch, die wir für “
git branch
“(Mann) selbst seit 8efb889 (“branch
: Segfault-Korrekturen und -Validierung”, 2013-02-23, Git v1.8.3-rc0 — verschmelzen gelistet in Charge Nr. 2), was wiederum die gleiche Art von Segfault behebt, die ich jetzt behebe in “git branch --set-upstream-to
“(Mann)sehen 6183d82 (“branch
: einführen--set-upstream-to
“, 20.08.2012, Git v1.8.0-rc0 — verschmelzen gelistet in Charge Nr. 5).Die Warnmeldung, die ich hier hinzufüge, ist eine Zusammenfassung des Fehlers, der für “
git branch
” in 8efb889und die Fehlerausgabeinstall_branch_config()
selbst emittiert, dh
es trimmt “refs/heads/
” vom Namen und sagt “branch X on remote
“, nicht “branch refs/heads/X on remote
“.
Neue Warnung:
could not set upstream of HEAD to 'X' from 'X'
when it does not point to any branch
Ich denke, es wäre sinnvoller, einfach zu sein
die()
hier, aber in den anderen Kontrollen für--set-upstream
hinzugefügt 24bc1a1geben wir stattdessen eine Warnung () aus.
Lassen Sie uns vorerst dasselbe hier tun, um die Konsistenz zu gewährleisten.Es gab eine früher eingereichte alternative Möglichkeit, dies zu beheben in diesem Threadaufgrund dieses Patches, der das Threading mit dem ursprünglichen Bericht unterbricht dieser Faden.
Ich habe es nicht bemerkt, bevor ich diese Version geschrieben habe.
Ich denke, die ausführlichere Warnmeldung hier ist besser, und wir sollten auch Tests für dieses Verhalten haben.Die
--no-rebase
Möglichkeit zu “git pull
“(Mann) wird ab dem kürzlich fusionierten benötigt 7d0daf3 (“Merge branch ‘en/pull-conflicting-options'”, 2021-08-30, Git v2.34.0-rc0 — verschmelzen gelistet in Charge Nr. 2).
Ich mag diese Antwort, sie ist sehr detailliert. Danke @DanielK
– 1vand1ng0
18. September 2021 um 9:34 Uhr
Die Frage gibt nicht den vollständigen Git-Befehl an. Es kann nur gefolgert werden, dass es um den Befehl geht
git push --set-upstream
.– DanielK.
9. August 2021 um 14:05 Uhr