1540 Stimmen

Standardverhalten von "git push" ohne Angabe eines Zweigs

Ich verwende den folgenden Befehl, um in meinen entfernten Zweig zu pushen:

git push origin sandbox

Wenn ich sage

git push origin

werden dadurch auch Änderungen in meinen anderen Zweigen übernommen, oder wird nur mein aktueller Zweig aktualisiert? Ich habe drei Zweige: master , production y sandbox .

El git push Die Dokumentation ist in dieser Hinsicht nicht sehr klar, daher möchte ich dies endgültig klären.

Welche Zweigstellen und Fernleitungen haben folgende Aufgaben git push Befehle genau aktualisieren?

git push 
git push origin

origin oben ist eine Fernbedienung.

Ich verstehe, dass git push [remote] [branch] wird nur dieser Zweig an die Gegenstelle übertragen.

0 Stimmen

Was die Konfiguration von Diff-Tools im Allgemeinen und das neue Skript git difftool betrifft, habe ich eine neue Antwort in dieser anderen SO-Frage hinzugefügt: stackoverflow.com/questions/255202/

73 Stimmen

Ich habe eine Blog-Beitrag über das überraschende Verhalten von git push die von Interesse sein könnten

2 Stimmen

@Mark: Bei anderen Arbeiten wird nur der aktuelle Zweig an den vorgelagerten Zweig gepusht. Schön.

1797voto

Brian L Punkte 10557

Sie können das Standardverhalten steuern, indem Sie push.default in Ihrer Git-Konfiguration einstellen. Von die git-config(1)-Dokumentation :

push.default

Legt die Aktion fest, die git push ausführen soll, wenn in der Befehlszeile keine refspec angegeben wird, in der Remote keine refspec konfiguriert ist und keine refspec durch eine der in der Befehlszeile angegebenen Optionen impliziert wird. Mögliche Werte sind:

  • nothing : nichts schieben

  • matching (Standard vor Git 2.0) alle passenden Zweige pushen

    Alle Zweige, die an beiden Enden den gleichen Namen haben, gelten als übereinstimmend.

  • upstream : den aktuellen Zweig in den vorgelagerten Zweig verschieben ( tracking ist ein veraltetes Synonym für Upstream)

  • current : die aktuelle Verzweigung in eine Verzweigung mit demselben Namen verschieben

  • simple (neu in Git 1.7.11, Standard seit Git 2.0) wie Upstream, weigert sich aber zu pushen, wenn der Name des Upstream-Zweigs nicht mit dem lokalen übereinstimmt

    Dies ist die sicherste Option und eignet sich gut für Anfänger.

Die Modi "Einfach", "Aktuell" und "Upstream" sind für diejenigen gedacht, die einen einzelnen Zweig nach Beendigung der Arbeit veröffentlichen wollen, auch wenn die anderen Zweige noch nicht bereit sind, veröffentlicht zu werden

Beispiele für die Befehlszeile:

So zeigen Sie die aktuelle Konfiguration an:

git config push.default

Um eine neue Konfiguration einzustellen:

git config push.default current

11 Stimmen

Es ist wahrscheinlich erwähnenswert, dass dies neu in v1.6.3 ist: kernel.org/pub/software/scm/git/docs/RelNotes-1.6.3.txt

11 Stimmen

Dieses "push.default" ist das Beste, was es für die Arbeit mit mehreren Repos gibt. Setzen Sie es auf "tracking" und alles ist gut. Kombiniert mit branch --set-upstream machen diese push und pull viel bequemer.

2 Stimmen

Laut der Git-Doku sollte auch "git push origin HEAD" funktionieren.

242voto

Christoffer Punkte 6783

Sie können das Standardverhalten für Ihr Git mit push.default einrichten

git config push.default current

oder wenn Sie viele Repositories haben und für alle dasselbe wollen, dann

git config --global push.default current

El aktuell in dieser Konfiguration bedeutet, dass Sie standardmäßig nur den aktuellen Zweig verschieben wenn Sie das tun Git-Push

Andere Optionen sind:

  • nichts : nichts schieben
  • matching : Alle übereinstimmenden Zweige verschieben (Standard)
  • tracking : Schiebt den aktuellen Zweig zu dem, was er gerade verfolgt
  • aktuell : Schieben Sie den aktuellen Zweig

UPDATE - NEUE METHODE FÜR DIESEN VORGANG

Ab Git 1.7.11 sollten Sie Folgendes tun:

git config --global push.default simple

Dies ist eine neue Einstellung, die auf die gleiche Weise wie die aktuelle funktioniert und Gerüchten zufolge ab Version 2.0 als Standardeinstellung für Git gelten wird.

30 Stimmen

Ja, ich habe die Antwort gelesen, auf die Sie sich beziehen, aber diese Antwort sagt nur, was zu tun ist, aber nicht, wie man es tut. Deshalb habe ich meine Antwort hinzugefügt, damit alle Informationen, die für die Einrichtung benötigt werden, auf derselben Seite zu finden sind.

3 Stimmen

OK; es ist besser, eine Bearbeitung des besagten Beitrags vorzuschlagen, denn niemand wird deine Antwort sehen, da sie wahrscheinlich nicht so viele Stimmen erhalten wird

0 Stimmen

Wie würde man vorgehen, um in den aktuellen Zweig zu ziehen? git pull origin?

210voto

baudtack Punkte 26516

git push origin wird alle Änderungen in den lokalen Zweigen, die mit den entfernten Zweigen in origin In Bezug auf git push

Arbeiten wie git push <remote> , wobei <remote> ist die Fernbedienung des aktuellen Zweigs (oder der Ursprung, wenn keine Fernbedienung für den aktuellen Zweig konfiguriert ist).

Aus dem Abschnitt Beispiele der Website git-push Manpage

2 Stimmen

Ja, das macht es deutlich. Ich verwende wahrscheinlich eine ältere Version von git (1.6.1.1 Mac OS X), die diese Beispiele nicht in der Manpage hat.

0 Stimmen

Wahrscheinlich läuft bei mir 1.6.3.1. Ich habe es auf der Website, die ich jedoch verlinkt gefunden.

2 Stimmen

In meinem Fall, in dem alle lokalen Zweige denselben entfernten "Ursprung" haben, wäre "git push" genau dasselbe wie "git push origin", das nur die lokalen Zweige pushen würde, die einen entsprechenden Zweig im entfernten haben.

51voto

neoneye Punkte 47046

Ich habe gerade meinen Code in einen Zweig übertragen und ihn auf Github gepusht, etwa so:

git branch SimonLowMemoryExperiments
git checkout SimonLowMemoryExperiments
git add .
git commit -a -m "Lots of experimentation with identifying the memory problems"
git push origin SimonLowMemoryExperiments

3 Stimmen

Sie können den Commit zu ` git commit -am"... "` zusammenfassen

21 Stimmen

Hat diese Antwort etwas mit der Frage zu tun?

0 Stimmen

Sieht so aus, als hätten alle beschlossen, eine zufällige Git-bezogene Antwort zu geben

28voto

Mukesh Chapagain Punkte 24039

Hier ist eine sehr praktische und hilfreiche Information über Git-Push : Git-Push: Nur die Spitze

Die häufigste Verwendung von git push ist die Übertragung Ihrer lokalen Änderungen in Ihr öffentliches Upstream-Repository. Angenommen, das Upstream-Repository ist ein Remote-Repository mit dem Namen "origin" (der Standard-Remote-Name, wenn Ihr Repository ein Klon ist) und der Zweig, der aktualisiert werden soll, heißt "master" (der Standard-Zweigname): git push origin master

git push origin pusht Änderungen aus allen lokalen Zweigen in die passenden Zweige des entfernten Ursprungs.

git push origin master werden Änderungen aus dem lokalen Master-Zweig in den entfernten Master-Zweig übertragen.

git push origin master:staging überträgt Änderungen aus dem lokalen Master-Zweig in den entfernten Staging-Zweig, sofern dieser existiert.

0 Stimmen

git push origin branch_name Aus irgendeinem Grund drängen nicht nur branch_name Zweig, sondern auch andere lokale Zweige (Git-Version 1.9.1).

0 Stimmen

git push origin master:staging ist ein fantastisches verstecktes Juwel!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X