[PYTHON] [Git] Ich habe versucht, anhand eines konkreten Beispiels zu verstehen, wie man Git Stash verwendet.

Einführung

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.

Als Voraussetzung

Die Umgebung, die ich benutze

Über Stash

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

Schritt ① Erstellen Sie eine Verzweigungs- und test1.py-Pull-Anforderung

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.

Schritt (2) Fügen Sie den Inhalt zu test1.py als Zweig nach Pull-Anforderung hinzu

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.

スクリーンショット 2020-10-15 21 53 31

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!)

Schritt ③ Evakuieren Sie den zu test1.py hinzugefügten Inhalt, um die Stash-Liste zu erstellen

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.)

スクリーンショット 2020-10-15 22 08 48

Schritt ④ Überprüfen Sie die Git-Stash-Liste. Überprüfen Sie den Befehl

Ü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")

Schritt ⑤ Erstellen Sie einen neuen Zweig (Create B Branch)

Erstellen Sie einen neuen Zweig, bevor Sie ihn reflektieren. Erstellen Sie hier einen B-Zweig aus dem Hauptzweig.

Schritt ⑥ Ziehen Sie den Inhalt der Fernbedienung zum B-Zweig (der zu ziehende Teil unterscheidet sich je nach Zustand des A-Zweigs).

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.

  1. Wenn zusammengeführt

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")
  1. Wenn nicht zusammengeführt Verwenden Sie "Git Pull Origin A", um den Inhalt des A-Zweigs in der Pull-Anforderung wiederzugeben. Trotzdem kann der Inhalt des A-Zweigs von test1.py im B-Zweig wiedergegeben werden. Der reflektierte Inhalt ist der gleiche wie oben.

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.

[git] Zusammenfassung, wie Sie Arbeit aus anderen Niederlassungen in Ihre eigene Niederlassung bringen können

Schritt ⑦ Überprüfen Sie die Befehle, die den Inhalt der Git-Stash-Liste widerspiegeln können

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.

Schritt ⑧ Reflektieren Sie den Inhalt der Git-Stash-Liste

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.

Referenz-URL

Recommended Posts

[Git] Ich habe versucht, anhand eines konkreten Beispiels zu verstehen, wie man Git Stash verwendet.
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Python-Anfänger haben einen Chat-BOT erstellt, also habe ich versucht, zusammenzufassen, wie man es macht
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe mit PyQt einen einfachen Texteditor erstellt
Ich habe versucht, eine Bibliothek (Common Thread) zu verwenden, die die Verwendung des Python-Threading-Pakets vereinfacht
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Ich habe eine Web-API erstellt
[Python] Was ist ein Slice? Eine leicht verständliche Erklärung zur Verwendung anhand eines konkreten Beispiels
[Python] Erklärt anhand eines konkreten Beispiels, wie die Bereichsfunktion verwendet wird
Ich las "Wie man ein Hacking Lab macht"
Ich habe versucht, Java mit Termux unter Verwendung von Termux Arch zu verwenden, aber es hat nicht funktioniert
Als ich versuchte, eine VPC mit AWS CDK zu erstellen, konnte ich es aber nicht schaffen
Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert
Ich habe versucht, eine verdächtige Person mithilfe von Geolonia-Adressdaten schnell zu einem MAP zu machen
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
So erstellen Sie ein Python-Paket mit VS Code
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Wie man Decorator in Django benutzt und wie man es macht
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Tipps für Python-Anfänger, um das Scikit-Image-Beispiel für sich selbst zu verwenden 7 Erstellen eines Moduls
Verstehen Sie, wie man Django-Filter verwendet
Ich habe versucht, mit Kendra, das bei re: Invent 2019 angekündigt wurde, sofort einen Befehl zum Durchsuchen der Dokumentensuche auszuführen
Ich habe versucht "Wie man eine Methode in Python dekoriert"
Ich habe versucht, Git Inspector zu verwenden
Ich habe versucht, [eine bestimmte Aufgabe] mit einem Raspeltorte zu automatisieren
Ich habe versucht, mit OpenCV eine Bewegungserkennungsüberwachungskamera mit einer WEB-Kamera mit Raspberry Pi herzustellen
Ich habe versucht zusammenzufassen, wie das EPEL-Repository erneut verwendet wird
Ich habe versucht, eine Site zu erstellen, mit der die aktualisierten Informationen von Azure einfach angezeigt werden können
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe Django-Befehle geschrieben, um das Debuggen von Sellerie-Aufgaben zu vereinfachen
Ein Memorandum beim automatischen Erwerb mit Selen
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Boto3 eine Liste der AMI-Namen zu erhalten
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, Jojo mit LSTM ein seltsames Zitat zu machen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Wie man einen lockeren Bot macht
Wie erstelle ich einen Crawler?
So erstellen Sie eine rekursive Funktion
[Blender] So erstellen Sie ein Blender-Plug-In
Wie erstelle ich einen Crawler?
Ich habe versucht zu überprüfen, wie schnell der Mnist des Chainer-Beispiels mit Cython beschleunigt werden kann
Ich habe versucht, ein System zu erstellen, um den Programmführer automatisch zu erfassen → ihn an einem Tag im Kalender zu registrieren