Remote-Zweig automatisch mit Git nachverfolgen

Lesezeit: 5 Minuten

Benutzer-Avatar
limp_chimp

Wenn ich einen lokalen Zweig verwende mybranchich möchte in der Lage sein, zu schieben und zu ziehen origin mybranch mit nur git push und git pull. Wie es ist, muss ich mühsam aufschreiben git push origin mybranch und git pull origin mybranch. Wenn ich versuche, nur zu verwenden git pull zum Beispiel bekomme ich:

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-to=origin/<branch> mybranch

Und wenn ich eintrete git branch --set-upstream-to=origin/mybranch mybranch, dann funktioniert es. Aber das ist fast so mühsam wie die vorherigen Befehle. Kann ich git dies einfach als Standardverhalten ausführen lassen? Ich habe gesehen, dass ähnliche Fragen gestellt wurden, und die Antworten deuten darauf hin, dass neuere Versionen von Git dies tun, aber ich verwende Git Version 2.1.3, die ziemlich neu ist, also kann es nicht nur das sein.

  • Wenn Sie das nächste Mal drücken, verwenden Sie git push -u origin mybranch. Von da an, wenn du dran bist mybranch, git push und git pull wird genug sein.

    – jub0bs

    2. April 2015 um 20:55 Uhr

  • Mit Git 2.37 (Q3 2022), a git config --global push.autoSetupRemote kann helfen.

    – VonC

    29. Mai um 10:32 Uhr

  • Nicht verwenden --global es sei denn, Sie wissen, was Sie tun. Es kann schwierig werden, Fehler ein Jahr später zu finden, wenn Sie längst vergessen haben, dass Sie sie einmal verwendet haben --global.

    – Martin

    4. August um 14:48 Uhr

Benutzer-Avatar
Loren

Ab git 2.37.0 ist dies nun mit git configuration möglich.

Führen Sie aus, um Ihre Konfiguration zu aktualisieren:

git config --global --add --bool push.autoSetupRemote true

Dann git push wird die entfernte Verzweigung automatisch einrichten.

Beachten Sie das --global flag bedeutet, dass dies für alle Git-Befehle auf Ihrem Computer gilt (unabhängig davon, um welches Repo es sich handelt), Sie können das Flag weglassen, um es für ein einzelnes Repo auf Ihrem Computer spezifisch zu machen.

Dokumentation:

https://git-scm.com/docs/git-config#Documentation/git-config.txt-pushautoSetupRemote

push.autoSetupRemote

Wenn auf “true” gesetzt, wird –set-upstream beim Standard-Push angenommen, wenn kein Upstream-Tracking für den aktuellen Zweig vorhanden ist; diese Option wird mit den push.default-Optionen simple, upstream und current wirksam. Dies ist nützlich, wenn Sie standardmäßig möchten, dass neue Zweige an die Standard-Remote gesendet werden (wie das Verhalten von push.default=current) und Sie auch möchten, dass das Upstream-Tracking festgelegt wird. Workflows, die am ehesten von dieser Option profitieren, sind einfache zentrale Workflows, bei denen erwartet wird, dass alle Zweige auf der Remote denselben Namen haben.

  • Ich finde es gefährlich, es zu benutzen --global ohne dem Benutzer mitzuteilen, dass er die Konfiguration für ändert alle Repositorys auf der Maschine.

    – Martin

    4. August um 14:52 Uhr

  • Ich habe eine Erklärung zu global hinzugefügt.

    – Loren

    4. August um 17:29 Uhr

Benutzer-Avatar
Ivaylo Strandjev

Eine mögliche Lösung besteht darin, Ihr Git-Push-Verhalten zu ändern current (Beachten Sie, dass dies auch einige andere Nebenwirkungen haben wird). Sie können dies entweder tun, indem Sie Ihre ändern ~/.gitconfig direkt (als Datei und dies setzt voraus, dass Sie sich unter Linux befinden) oder durch Ausführen von:

git config --global push.default current

Jetzt, wenn Sie pushwird git deinen aktuellen Branch automatisch in einen Remote-Branch verschieben der selbe Name auch wenn Sie es nicht explizit angeben. Wenn Ihr aktueller Zweig kein Remote-Äquivalent hat, wird ein Remote-Zweig erstellt und Ihr aktueller Zweig wird so eingestellt, dass er ihn verfolgt (das gleiche wie git push -u origin new_branch aber mit einem einzigen git push). Sehen Sie sich auch diese Frage an, in der das Git-Push-Verhalten ausführlich beschrieben wird.

  • Und git config --global pull.default current zum automatischen Ziehen von Zweigen mit dem gleichen Namen wie der aktuelle vom Ursprung.

    – Alexander Rodin

    18. August 2017 um 19:34 Uhr

  • @AlexanderRodin funktioniert nicht, fragt immer noch nach Upstream mit Git 2.15.0

    – Edouard Lopez

    17. November 2017 um 16:00 Uhr

  • @AlexanderRodin Diese Konfigurationsoption ist nirgendwo dokumentiert. Sind Sie sicher, dass es existiert?

    – xeruf

    16. Oktober 2018 um 14:12 Uhr

  • Dokumente git-scm.com/docs/git-config#Documentation/…

    – Aurelio

    19. März 2019 um 11:21 Uhr

  • Ich habe push.default einstellen currentaber das richtet beim ersten Push kein Remote-Tracking ein. git config --global push.default upstream wird wohl helfen.

    – Phil Piroschkow

    3. April 2019 um 19:31 Uhr

Es ist nicht Github, es ist Ihr lokaler Git, der all dies tut.

Wenn Sie erstellen mybranch vor Ort mit git checkout und es existiert bereits als origin/mybranch in Ihrem lokalen Repository können Sie einfach git checkout mybranch und Ihr lokaler Git wird das sehen origin/mybranch existiert und lokal erstellen mybranch mit origin/mybranch als stromaufwärts.

Andererseits, wenn origin/mybranch existiert noch nicht und du erschaffst mybranch vor Ort mit git checkout -b oder ähnliches, Sie können es nicht wirklich so einstellen, dass es den Upstream-Zweig verfolgt, der noch nicht existiert (Sie können konfigurieren es, um diesen Zweig zu verfolgen, aber Sie erhalten gelegentlich eine Beschwerde, dass die Originalversion nicht vorhanden ist).

In diesem speziellen Fall auf der Erste push (derjenige, der den Zweig stromaufwärts erstellt), können Sie Folgendes verwenden:

git push -u origin mybranch

was Ihrem lokalen Git sagt, dass er pushen soll mybranch zu origin undsobald das erledigt ist, einrichten origin/mybranch als Tracking-Zweig für mybranch.

Beachten Sie, dass dies dasselbe ist wie Laufen git branch --set-upstream-to: du tust es einmal, danach wird es lokal festgelegt und Sie müssen es nicht erneut tun. Es ist einfach bequemer, da Sie es zusammen mit dem tun können push das erstellt die Verzweigung bei origin. Aber du musst dich trotzdem daran erinnern (einmal; du wirst erinnert, wenn du rennst git push ohne -u origin mybranch).

  • Ah, ich dachte, ich hätte es vermieden, speziell auf Github zu verweisen, aber ich habe mich vertippt. Wird behoben. Danke für die Information! Ich denke, ich werde einfach einen Bash-Alias ​​erstellen, um dies zu tun, wenn ich den Zweig erstelle.

    – limp_chimp

    2. April 2015 um 23:01 Uhr

1283100cookie-checkRemote-Zweig automatisch mit Git nachverfolgen

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

Privacy policy