Frage Standardverhalten von "git push" ohne Angabe eines Zweigs


Ich verwende den folgenden Befehl, um zu meinem entfernten Zweig zu gelangen:

git push origin sandbox

Wenn ich sage

git push origin

verschiebt das auch Änderungen in meinen anderen Filialen, oder aktualisiert es nur meine aktuelle Branche? Ich habe drei Zweige: master, production und sandbox.

Das git push Dokumentation ist nicht sehr klar, also möchte ich das für immer klarstellen.

Welche Zweige und Fernbedienungen machen folgendes git push Befehle werden genau aktualisiert?

git push 
git push origin

origin Oben ist eine Fernbedienung.

ich verstehe das git push [remote] [branch] wird nur diesen Zweig zur Fernbedienung schieben.


1213
2018-06-04 02:45


Ursprung


Antworten:


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

push.default

Definiert die Aktion, die git push ausführen soll, wenn in der Befehlszeile keine refspec angegeben wird, refspec nicht in der remote konfiguriert ist und keine refspec von einer der in der Befehlszeile angegebenen Optionen impliziert wird. Mögliche Werte sind:

  • nothing: Drück nichts

  • matching: Drücken Sie alle passenden Zweige

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

    Dies ist die Standardeinstellung in Git 1.x.

  • upstream: Drücken Sie den aktuellen Zweig zu seinem stromaufwärts gelegenen Zweig (tracking ist ein veraltetes Synonym für Upstream)

  • current: Drücken Sie den aktuellen Zweig auf einen Zweig mit demselben Namen

  • simple: (Neu in Git 1.7.11) wie Upstream, aber weigert sich zu drücken, wenn der Name des Upstream-Zweiges anders ist als der lokale

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

    Dies wird der Standard in Git 2.0.

Die einfachen, aktuellen und vorgelagerten Modi sind für diejenigen, die nach Beendigung der Arbeit einen einzigen Zweig verdrängen wollen, auch wenn die anderen Zweige noch nicht bereit sind, herausgedrückt zu werden

Befehlszeilenbeispiele:

So zeigen Sie die aktuelle Konfiguration an:

git config --global push.default

So legen Sie eine neue Konfiguration fest:

git config --global push.default current

1422
2018-06-04 03:16



git push origin Alle Änderungen an den lokalen Zweigstellen, die über entsprechende ferne Zweige verfügen, werden übertragen origin Wie für git push 

Funktioniert wie git push <remote>, woher <remote> ist der entfernte Zweig des aktuellen Zweiges (oder der Ursprung, wenn für den aktuellen Zweig keine Gegenstelle konfiguriert ist).

Aus dem Abschnitt Beispiele der git-push Man Seite


197
2017-10-06 10:45



Sie können mit push.default das Standardverhalten für Ihren Git festlegen

git config push.default current

oder wenn Sie viele Repositories haben und das gleiche für alle dann wollen

git config --global push.default current

Das Strom In dieser Konfiguration bedeutet das, dass Sie das standardmäßig tun werden Drücken Sie nur den aktuellen Zweig wenn Sie das tun Git drücken

Andere Optionen sind:

  • nichts: Drück nichts
  • Matching: Push alle passenden Zweige (Standard)
  • Tracking: Drücken Sie den aktuellen Zweig auf das, was verfolgt wird
  • Aktuell: Drücken Sie den aktuellen Zweig

UPDATE - NEUE ART, DAS ZU TUN

Ab Git 1.7.11 folgendes tun:

git config --global push.default simple

Dies ist eine neue Einstellung, die auf die gleiche Weise wie die aktuelle funktioniert und standardmäßig Gerüchten zufolge von Version 2.0 nach git übertragen wird


194
2017-11-06 10:05



Ich habe meinen Code einfach an eine Verzweigung gebunden und sie so an github übergeben:

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

55
2017-08-09 08:02



Hier ist eine sehr nützliche und hilfreiche Information über Git drücken: Git Push: Nur der Tipp

Die häufigste Verwendung von git push besteht darin, Ihre lokalen Änderungen an Ihr öffentliches Upstream-Repository zu übertragen. Angenommen, der Upstream ist ein Remote mit dem Namen "Ursprung" (der Standard-Remote-Name, wenn Ihr Repository ein Klon ist) und der zu aktualisierende Zweig heißt "Master" (der Standard-Branch-Name). Dies geschieht mit: git push origin master

git push origin wird Änderungen von allen lokalen Zweigen in übereinstimmende Zweige der Ursprungsfernbedienung übertragen.

git push origin master wird Änderungen vom lokalen Master-Zweig zum Remote-Master-Zweig übertragen.

git push origin master:staging wird Änderungen vom lokalen Master-Zweig an den Remote-Staging-Zweig übertragen, falls vorhanden.


22
2018-03-17 11:13



(März 2012)
Vorsicht: Dieser Standard "matching"Die Politik könnte sich bald ändern
(manchmal nach git1.7.10 +)
:

Sehen "Bitte besprechen Sie: Was "git push" sollte tun, wenn Sie nicht sagen, was Sie schieben sollen?"

In der aktuellen Einstellung (d.h. push.default=matching), git push Ohne Argument werden alle Zweige verschoben, die lokal und remote mit demselben Namen existieren.
  Dies ist normalerweise angemessen, wenn ein Entwickler in sein eigenes öffentliches Repository schiebt, aber möglicherweise verwirrend, wenn nicht gefährlich, wenn ein gemeinsam genutztes Repository verwendet wird.

Der Vorschlag lautet: ändere den Standardwert auf 'upstream", d. h. nur den aktuellen Zweig drücken und ihn zu dem Zweig schieben, von dem der Zug ziehen würde.
  Ein anderer Kandidat ist 'current'; Dadurch wird nur der aktuelle Zweig in den Remote-Zweig desselben Namens verschoben.

Was bisher besprochen wurde, kann in diesem Thread gesehen werden:

http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694

Vorherige relevante Diskussionen beinhalten:

Um an der Diskussion teilzunehmen, senden Sie Ihre Nachrichten an: git@vger.kernel.org


19
2018-03-15 00:50



Ich lege das einfach in meinen .gitconfig-Aliase-Abschnitt und liebe, wie es funktioniert:

pub = "!f() { git push -u ${1:-origin} `git symbolic-ref HEAD`; }; f"

Schiebt den aktuellen Zweig zum Ursprung mit git pub oder ein anderes Repo mit git pub repo-name. Lecker.


17
2018-06-04 02:49



Ein Git Push wird versuchen, alle lokalen Zweige auf den Remote-Server zu schieben, das ist wahrscheinlich, was Sie nicht wollen. Ich habe ein paar Annehmlichkeiten eingerichtet, um damit umzugehen:

Alias ​​"gpull" und "gpush" passend:

In meinem ~ / .bash_profile

get_git_branch() {
  echo `git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'`
}
alias gpull='git pull origin `get_git_branch`'
alias gpush='git push origin `get_git_branch`'

Wenn Sie also "gpush" oder "gpull" ausführen, wird nur der Zweig "aktuell" gedrückt.


8
2018-06-23 07:50