Haben Sie bei der Verwendung von Git Hub Folgendes?
――Ich möchte die Entwicklung anhand des Inhalts der Pull-Anfrage fortsetzen, wenn ich ziehe und eine Bestätigung von anderen Personen erhalte.
――Ich habe in der Branche, an der ich gearbeitet habe, einen Fehler gemacht und möchte die Arbeit widerspiegeln, die ich in der Branche geleistet habe, an der ich ursprünglich arbeiten wollte.
In einem solchen Fall ist der Befehl ** stash ** praktisch, daher werde ich ihn anhand eines Verwendungsbeispiels vorstellen. Ich würde es begrüßen, wenn Sie darauf hinweisen könnten, ob es eine bequemere Methode für Git-Anfänger gibt.
Was ist ** Stash **? Mit einem Wort, es ist ein Befehl, der den Änderungsverlauf von Commit zu ** Stash List ** evakuieren (halten) kann.
Ich werde es anhand eines konkreten Beispiels erklären.
Hier ist eine grobe Prozedur.
--Verfahren ① Erstellen Sie eine Verzweigungs- und test1.py-Pull-Anforderung --Verfahren (2) Fügen Sie den Inhalt zu test1.py als Zweig nach Pull-Anforderung hinzu --Verfahren ③ Evakuieren Sie den zu test1.py hinzugefügten Inhalt, um die Stash-Liste zu erstellen --Schritt ④ * Überprüfen Sie den Inhalt des Stashs mit der Git-Stash-Liste ** --Schritt ⑤ Neuen Zweig erstellen (B-Zweig erstellen) --Verfahren ⑥ Ziehen Sie den Inhalt der Fernbedienung zum B-Zweig (der zu ziehende Teil unterscheidet sich je nach Zustand des A-Zweigs). --Verfahren ⑦ Bestätigen Sie den Befehl, der den Inhalt der Git-Stash-Liste widerspiegeln kann --Verfahren ⑧ Reflektiert den Inhalt der Git-Stash-Liste
Nachdem ich den A-Zweig aus dem Hauptzweig erstellt hatte, habe ich die folgenden Dateien festgeschrieben und eine Pull-Anfrage gestellt.
test1.py
#Zuerst festschreiben
print("test1")
Ich möchte die Datei verwenden, die ich festgeschrieben habe, während ich auf die nächste Pull-Anfrage warte.
Der folgende Inhalt wurde zu test1.py hinzugefügt, während der A-Zweig beibehalten wurde.
test1.py
#Zuerst festschreiben
print("test1")
#Inhalt hinzufügen
print("test2")
Beim Speichern werden die Änderungen in test1.py wie im Bild im nicht bereitgestellten Teil wiedergegeben.
Als nächstes möchte ich diesen hinzugefügten Inhalt in einem anderen Zweig wiedergeben. Es ist möglich, ein Commit durchzuführen, da es sich in derselben Branche befindet, aber im Grunde ist es nicht sehr angenehm, ein Commit durchzuführen, während die andere Partei es überprüft. Daher möchte ich es vermeiden. Dieses Beispiel wurde nur hinzugefügt, aber in Wirklichkeit ist es möglich, den Fehler in dem Teil, der in Schritt 1 gezogen wurde, zu bemerken und zu korrigieren. (Wenn Sie aus Sicht der anderen Partei den Inhalt ohne Erlaubnis ändern können, müssen Sie ihn von Anfang an sehen, Scheiße!)
Evakuieren Sie die Änderungen.
Führen Sie den Befehl git stash
im Terminal aus (Eingabeaufforderung für Windows). Dann sieht die Datei test1.py im Zweig A folgendermaßen aus:
Terminal
git stash
<Nach der Ausführung>
test1.py
#Zuerst festschreiben
print("test1")
Es kehrt zum Inhalt der Datei zurück, als sie in Schritt ① festgeschrieben wurde. Mit anderen Worten, der in Schritt 2 hinzugefügte Inhalt wird in die "Git-Stash-Liste" evakuiert. Im nicht bereitgestellten Abschnitt werden keine Änderungen an test1.py vorgenommen. (Es sieht aus wie auf dem Bild unten.)
Überprüfen Sie die Liste der evakuierten Git-Verstecke. Der zu verwendende Befehl lautet:
①
git stash list
(Inhalt) Sie können die Git-Stash-Liste überprüfen. (Anwendungsbeispiel)
Terminal
git stash list
<Ausführungsergebnis unten>
stash@{0}: WIP on branch_name: commit_id2 commit_comment2
Das obige "stash @ {0}" enthält den Inhalt, der zuvor evakuiert wurde. Diese 0 zeigt an, dass es die 0 in der Stash-Liste ist. Wenn es mehr als eine gibt, geben Sie die Stash-Liste an, die Sie mit dieser Nummer verwenden möchten. Wenn Sie es ausführen und nichts passiert, bedeutet dies, dass Sie keine Git-Stash-Liste haben.
②
git stash show stash@{0} -p
(Inhalt)
Sie können den gespeicherten Inhalt der Git-Stash-Liste überprüfen. 0 in stash @ {0} gibt an, welche Stash-Liste Sie überprüfen möchten, wenn mehrere Git-Stash-Listen vorhanden sind. Der -p
Teil kann durch --patch
ersetzt werden.
(Anwendungsbeispiel)
Terminal
git stash show stash@{0} -p
<Ausführungsergebnis unten>
#Zuerst festschreiben
print("test1")
+
+#Inhalt hinzufügen
+print("test2")
③
git diff stash@{0}
(Inhalt) Sie können den Unterschied in der Git-Stash-Liste anzeigen. Die Erklärung in Worten ist schwer zu verstehen. Sehen Sie sich daher ein Anwendungsbeispiel an.
(Anwendungsbeispiel)
Terminal
git diff stash@{0}
<Ausführungsergebnis unten>
#Zuerst festschreiben
print("test1")
-
-#Inhalt hinzufügen
-print("test2")
Erstellen Sie einen neuen Zweig, bevor Sie ihn reflektieren. Erstellen Sie hier einen B-Zweig aus dem Hauptzweig.
Nach dem Erstellen des B-Zweigs ziehe ich den Inhalt der Fernbedienung, aber der Ziehteil ändert sich abhängig davon, ob die Ziehanforderung des A-Zweigs zusammengeführt wird oder nicht.
Verwenden Sie "Git Pull Origin Master", um den Inhalt des Remote-Master-Zweigs im B-Zweig wiederzugeben. Der Inhalt von test1.py zu diesem Zeitpunkt ist wie folgt.
test1.py
#Zuerst festschreiben
print("test1")
test1.py
#Zuerst festschreiben
print("test1")
※Hinweis
Wenn Sie den ** gezogenen Teil ** mit der Methode 2 korrigieren, tritt ein Konflikt auf, wenn Sie versuchen, die Pull-Anforderung des B-Zweigs zusammenzuführen, nachdem die Pull-Anforderung des A-Zweigs zusammengeführt wurde. Selbst wenn es einen Konflikt gibt, gibt es kein Problem, solange er jedes Mal gelöst wird. Wenn Sie nur das gezogene Teil hinzufügen, ohne es zu ändern, tritt kein Konflikt auf.
(Ergänzung) Wenn Sie den Inhalt eines A-Zweigs in einen B-Zweig ziehen möchten, haben Sie möglicherweise mehrere Commits in einem A-Zweig und möchten möglicherweise den Inhalt eines dieser Commits wiedergeben. Zu dieser Zeit gibt es einen praktischen Befehl namens "git cherry-pick". Wenn Sie mehr über Cherry-Pick erfahren möchten, gibt es eine Person, die dies auf leicht verständliche Weise unter der folgenden URL erklärt. Bitte beziehen Sie sich darauf.
Es gibt zwei Hauptbefehle, die wiedergegeben werden können.
○ 1 ..
git stash apply stash@{0}
Nachdem Sie dies berücksichtigt haben, bleibt die Git-Stash-Liste unverändert.
○ Zweitens
git stash pop stash@{0}
Nachdem dies berücksichtigt wurde, wird die Git-Stash-Liste gelöscht.
Die Zahl in {} ist eine Ganzzahl, die angibt, welche Stash-Liste angezeigt werden soll. Wenn Sie keine Stash-Liste angeben, wird standardmäßig stash @ {0} angegeben.
Der Inhalt, der durch den in Schritt confirmed bestätigten Befehl "git stash pop" evakuiert wurde, wird wie folgt wiedergegeben.
Terminal
git stash pop stash@{0}
Datei test1.py nach der Ausführung
test1.py
#Zuerst festschreiben
print("test1")
#Inhalt hinzufügen
print("test2")
Damit können die nach der Pull-Anforderung vorgenommenen Änderungen in Schritt (1) im B-Zweig wiedergegeben werden.
Wenn Sie danach "git stash list" ausführen, gibt es kein stash @ {0}. Bei Ausführung durch git stash apply stash @ {0}
bleibt stash @ {0} erhalten.