Was macht ‘–set-upstream’?

Lesezeit: 7 Minuten

Was macht set upstream
Евгений Масленков

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.

  • 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


Was macht set upstream
Der CodeKünstler

Um Verwirrung zu vermeiden,
neuere Versionen von git 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

1647287289 837 Was macht set upstream
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

Was macht set upstream
Steinbutt Alin

git branch --set-upstream <<origin/branch>> wird offiziell nicht mehr unterstützt und durch ersetzt git branch --set-upstream-to <<origin/branch>>

1647287289 87 Was macht set upstream
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

  • Überprüfen Sie zunächst Ihre Remote-Repositories mit git remote -v
  • Wenn Sie stromaufwärts nicht sehen können, verwenden Sie es git remote add upstream <URL>
  • Überprüfen Sie erneut Ihre Remote-Repositories mit 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>

1647287290 711 Was macht set upstream
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 , in dem Sie sich befinden, denselben Namen hat wie der Remote-Branch in Ihrem Upstream-Repository , zu dem Sie pushen. Schließlich gehe ich von einer gemeinsamen Git-Konfiguration aus.

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:

  • branch..remote =
  • branch..merge = /ref/heads/

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 mainsind 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:

  • Warum muss ich „git push –set-upstream origin“ ausführen?

Aber achten Sie auf Git-Macken:

Wenn als URL oder Dateipfad angegeben wird, siehe z dieses Beispiel:

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:

  • Git: Es ist schwierig, ein vorhandenes Git-Repository dazu zu bringen, ein neues Bare-Remote-Repository zu verfolgen

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

1647287290 811 Was macht set upstream
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 behoben

Berichterstatter: 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 Fehlerausgabe install_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

1002940cookie-checkWas macht ‘–set-upstream’?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy