Ich benutze Git schon eine Weile, aber ich musste nie selbst ein neues Remote-Repo einrichten und war neugierig darauf. Ich habe Tutorials gelesen und bin verwirrt darüber, wie ich "git push" zum Laufen bringen kann.
Wenn ich es einfach benutze git push
, werde ich aufgefordert, einen Standardzweig (?) Zu sehen, auf den ich zeigen soll. Was ist der Unterschied zwischen diesen beiden Optionen, die es mir bietet?
git config --global push.default matching
git config --global push.default simple
Durch das Abgleichen werden nur die Zweige verschoben, die ich in meinem lokalen Repo habe. Wenn sie nicht übereinstimmen, muss ich sie manuell anweisen, alle neuen lokalen Zweige zu verschieben, richtig? Ist diese bewährte Methode anzuwenden oder ist sie einfach die beste?
git
git-push
git-pull
git-remote
Josh
quelle
quelle
pull.default
verfügbar ist, um alle diese Zweige lokal zu aktualisierenAntworten:
git push
kann abhängig von dieser Konfiguration alle oder einen einzelnen Zweig pushen:Schieben Sie alle Zweige
Es werden alle Zweige in den Remote-Zweig verschoben und zusammengeführt. Wenn Sie nicht alle Zweige verschieben möchten, können Sie nur den aktuellen Zweig verschieben.
Schieben Sie nur den aktuellen Zweig
Meiner Meinung nach ist es daher besser, diese Option zu verwenden und Ihren Code Zweig für Zweig zu pushen. Es ist besser, Zweige manuell und einzeln zu verschieben.
quelle
push.default current
Antwort von @UpAndAdam gefallen . Weiß nicht davon.simple
keine Option mehr ist. In1.7.8.4
(und früher?) Führt es zu einem Fehler, wenn Sie versuchen zu pushen. abercurrent
ist noch verfügbartracking
-> schiebe den aktuellen Zweig in seinen vorgelagerten Zweig.simple
macht keinen Sinn, widerspricht dieser Antwort und ist falsch - was diese Antwort verwirrend macht. Auf der verlinkten Seite heißt es:simple
"Verschiebt Zweige nacheinander. Meistens mit dem aktuellen Zweig verbunden." Bedeutet das, dass die Zweige nacheinander und nicht parallel geschoben werden? Was bedeutet "meistens verbunden"? Dannsimple
zitiert die Beschreibung für die Beschreibung fürmatching
, was bedeuten würde, dass die Beschreibung fürmatching
auch für giltsimple
. Aber das stimmt natürlich nicht.Aus der GIT-Dokumentation: Git Docs
Unten finden Sie die vollständigen Informationen. Kurz gesagt,
simple
wird dascurrent working branch
und auch dann nur drücken, wenn es auch den gleichen Namen auf der Fernbedienung hat. Dies ist eine sehr gute Einstellung für Anfänger und wird zur Standardeinstellung inGIT 2.0
Während alle Filialen lokal, die den gleichen Namen haben, auf der Fernbedienung
matching
pushen . (Ohne Rücksicht auf Ihren aktuellen Arbeitszweig). Dies bedeutet, dass möglicherweise viele verschiedene Zweige gepusht werden, einschließlich derer, die Sie möglicherweise nicht einmal teilen möchten.In meinem persönlichen Gebrauch verwende ich im Allgemeinen eine andere Option:
current
die den aktuellen Arbeitszweig pusht (weil ich immer nach Änderungen verzweige). Aber für einen Anfänger würde ich vorschlagensimple
quelle
git push origin master
es dasselbe tut. Der Sinn der Modi und Standardeinstellungen ist im Allgemeinen, was passiert, wenn Sie einfach sagengit push
und es nicht einer Fernbedienung oder einem Zweig mitteilen. Welche Standardeinstellung? du meinst die Standardeinstellung von push.default? Die Standardeinstellung in welcher Version von Git ... Wenn Sie es nicht bekommen, ist Ihr Kommentar äußerst vage.Versionshinweise zu Git v2.0
Hinweise zur Abwärtskompatibilität
Wenn
git push [$there]
nicht gesagt wird, was zu pushen ist, haben wir bisher die traditionelle "Matching" -Semantik verwendet (alle Ihre Zweige wurden an die Fernbedienung gesendet, solange dort bereits Zweige mit demselben Namen vorhanden sind). In Git 2.0 ist die Standardeinstellung jetzt die "einfache" Semantik, die Folgendes vorantreibt:Nur der aktuelle Zweig zu dem Zweig mit demselben Namen und nur, wenn der aktuelle Zweig so eingestellt ist, dass er in diesen Remote-Zweig integriert wird, wenn Sie auf denselben Remote-Zweig pushen, von dem Sie ihn abrufen. oder
Nur der aktuelle Zweig zu dem Zweig mit demselben Namen, wenn Sie auf eine Fernbedienung pushen, von der Sie normalerweise nicht abrufen.
Sie können dies mit der Konfigurationsvariablen "push.default" ändern. Wenn Sie ein Oldtimer sind, der weiterhin die Semantik "Matching" verwenden möchte, können Sie die Variable beispielsweise auf "Matching" setzen. Lesen Sie die Dokumentation für andere Möglichkeiten.
Wenn
git add -u
undgit add -A
in einem Unterverzeichnis ausgeführt werden, ohne anzugeben, welche Pfade in der Befehlszeile hinzugefügt werden sollen, werden sie aus Gründen der Konsistenz mitgit commit -a
und anderen Befehlen für den gesamten Baum ausgeführt (diese Befehle werden nur für das aktuelle Unterverzeichnis verwendet). Sagen Siegit add -u .
odergit add -A .
wenn Sie den Vorgang auf das aktuelle Verzeichnis beschränken möchten.git add <path>
ist dasselbe wiegit add -A <path>
jetzt, sodassgit add dir/
Pfade, die Sie aus dem Verzeichnis entfernt haben , bemerkt und das Entfernen aufgezeichnet werden. In älteren Versionen von Gitgit add <path>
werden Entfernungen ignoriert. Sie können sagengit add --ignore-removal <path>
, dass Sie nur hinzugefügte oder geänderte Pfade hinzufügen<path>
möchten, wenn Sie dies wirklich möchten.quelle