Git

Git Stash mit Namen

Git Stash mit Namen

Wie Sie Ihre Änderungen mit dem zugehörigen Namen in Git verstauen und danach wiederfinden

Entwickler müssen oft Multitasking betreiben. Möglicherweise arbeiten Sie an einer neuen Funktion und Sie möchten möglicherweise einen Fehler beheben. Oder Sie sind der leitende Entwickler in mehreren Projekten.

Wenn Sie zwischen Aufgaben wechseln, möchten Sie manchmal keine unerledigten Arbeiten festlegen. In diesen Fällen kann der Befehl git stash eine große Hilfe sein. Es ermöglicht Ihnen, Ihre Änderungen zu stapeln und später zu der unvollendeten Arbeit zurückzukehren, ohne unnötige Commits zu Ihren Git-Repositorys hinzuzufügen.

Ein Workflow für Git Stash

Lassen Sie uns einen Git-Master-Zweig initialisieren und eine Datei ReadMe übertragen commit.TXT.

$ mkdir mein_projekt
$ cd mein_projekt/
$ git init
$ ReadMe berühren.TXT
$ git add -A
$ git commit -m "Initialisieren"

Jetzt fügen wir eine weitere Datei namens a . hinzu.txt an den Master-Zweig.

$ berühren a.TXT
$ git add -A
$ git commit -m "Hinzugefügt a.TXT"

Wenn Sie den Verlauf überprüfen, sehen Sie:

$ git log --oneline
d79f7aa Hinzugefügt a.TXT
9434d7e Initialisieren

Jetzt erstellen wir einen Feature1-Zweig und fügen ein b . hinzu.txt-Datei:

$ git branch-Funktion1 feature
$ git Checkout-Funktion1
$ berühren b.TXT
$ git add -A
$ git commit -m "Hinzugefügt b.TXT"

Öffne dein b.txt-Datei in einem Editor und in die Zeile:

Ich bin dabei, dies zu ändern in…

Und speichere die Datei. Wenn Sie Ihren Git-Status überprüfen, sehen Sie Folgendes:

$git-Status
Auf Zweigfunktion1
Änderungen, die nicht für Commit bereitgestellt werden:
(benutze "git add … " um zu aktualisieren, was festgeschrieben wird)
(benutze "git checkout" -- … ", um Änderungen im Arbeitsverzeichnis zu verwerfen)
 
geändert:   b.TXT
 
keine Änderungen zum Commit hinzugefügt (verwenden Sie "git add" und/oder "git commit -a")

Angenommen, Sie erhalten zu diesem Zeitpunkt eine Aufforderung zur Aktualisierung der a.txt-Datei im Master-Zweig. Aber du bist noch nicht fertig mit dem b.txt-Datei. Wenn Sie versuchen, den Master-Zweig auszuchecken, erhalten Sie die folgende Fehlermeldung:

$ git checkout master
error: Ihre lokalen Änderungen an den folgenden Dateien würden beim Checkout überschrieben:
b.TXT
Bitte übertragen Sie Ihre Änderungen oder speichern Sie sie, bevor Sie die Branche wechseln können.
Abbrechen

Aber Sie wollen die unvollendete Arbeit nicht in b . begehen.TXT. Sie können den Git-Stash in dieser Situation verwenden:

$ git stash
Arbeitsverzeichnis und Indexstatus WIP auf Feature1 gespeichert: 2cfe39b Hinzugefügt b.TXT
HEAD ist jetzt bei 2cfe39b Hinzugefügt b.TXT

Wenn Sie b ankreuzen.txt, sie sollte leer sein:

$ Katze b.TXT
$

Wenn Sie den Stash überprüfen, sehen Sie:

$ git Stash-Liste
stash@0: WIP auf Feature1: 2cfe39b Hinzugefügt b.TXT

Wenn Sie versuchen, den Master-Zweig auszuchecken, sollten Sie dies jetzt tun können:

$ git checkout master
Auf Zweig 'master' gewechselt

Angenommen, Sie nehmen die erforderlichen Änderungen am Master vor und kehren dann zum Zweig Feature1 zurück:

$ git Checkout-Funktion1

Dein B.txt ist noch leer:

$ Katze b.TXT
$

Aber wenn Sie die Änderungen mit dem folgenden Befehl aus dem Stash abrufen:

$ git stash anwenden
 
Auf Zweigfunktion1
Änderungen, die nicht für Commit bereitgestellt werden:
(benutze "git add … " um zu aktualisieren, was festgeschrieben wird)
(benutze "git checkout" -- … ", um Änderungen im Arbeitsverzeichnis zu verwerfen)
 
geändert:   b.TXT
 
keine Änderungen zum Commit hinzugefügt (verwenden Sie "git add" und/oder "git commit -a")

Der Befehl stash apply hat die gespeicherten Änderungen übernommen und auf b . angewendet.txt-Datei
Sie können Ihre Arbeit in b . abschließen.txt meine Änderung der Zeile

Ich bin dabei, dies zu ändern in…


Zu

Ich bin dabei, dies in FERTIG zu ändern

Fahren Sie jetzt fort und übernehmen Sie Ihre Änderungen:

$ git add -A
$ git commit -m "Geändert b.TXT"

Das Anwenden eines Stashs entfernt ihn nicht automatisch aus dem Stash. Sie müssen es manuell bereinigen:

$ git stash drop
Verlorene Refs/Stash@0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

Warum Git Stash mit Name?

Der Git-Stash ist ein Stack. Damit Sie Ihre Änderungen weiter stapeln können.

Angenommen, Sie fügen „X“ zu b . hinzu.txt, verstaue es, füge ein "Y" zu b hinzu.txt, verstaue es und füge ein "Z" zu b hinzu.txt und verstaue es. Wenn Sie den Stash-Verlauf überprüfen, sehen Sie etwa Folgendes:

$ git Stash-Liste
[email protected]0: WIP auf Feature1: 2d6f515 Geändert b.TXT
[email protected]1: WIP auf Feature1: 2d6f515 Geändert b.TXT
[email protected]2: WIP auf Feature1: 2d6f515 Modified b.TXT

Du hast keine Möglichkeit zu wissen, welcher Vorrat welches Wechselgeld enthält. Wenn Sie stashen, können Sie die Speicheroption verwenden, um Kommentare abzugeben. Sie können die Kommentare verwenden, um Ihrem Stash einen Namen zu geben und ihn erkennbar zu machen:

$ git stash speichern "X"
Gespeichertes Arbeitsverzeichnis und Indexstatus Bei Funktion1: X
KOPF ist jetzt bei 2W6f515 Modifiziert b.TXT

Für das Hinzufügen von "X", "Y" und "Z"-Modifikationen können Sie Folgendes in Ihrem Stash erhalten, indem Sie die Speicheroption für jeden Stash verwenden:

$ git Stash-Liste
stash@0: Auf Funktion1: Z
stash@1: Bei Funktion1: Y
stash@2: Auf Funktion1: X

Jetzt haben Sie einen Namen für jede Änderung, die Sie gespeichert haben. Leider kannst du den Namen nicht verwenden, um den Vorrat abzurufen. Sie müssen die Stash-Nummer verwenden. Angenommen, Sie möchten Ihr „Y“-Wechselgeld erhalten. Sie sehen, dass [email protected]1 Y ist. Sie können diese Änderung also auf Ihren aktuellen Zweig anwenden:

$ git stash apply stash@1

Und dein b.txt sollte die Änderungen von [email protected]1 enthalten.

Sie können die gleiche Methode verwenden, um einen Vorrat abzulegen. Angenommen, Sie stellen fest, dass Sie den X-Vorrat nicht mehr benötigen. Sie können einfach den folgenden Befehl verwenden, um diesen Stash zu löschen:

$ git stash drop stash@2

Und der Vorrat sollte weg sein:

$ git Stash-Liste
stash@0: Auf Funktion1: Z
stash@1: Bei Funktion1: Y

Denken Sie daran, dass, wenn Sie die Apply- und Drop-Optionen ohne Parameter verwenden, der obere Teil des Stapels verwendet wird ([email protected]0).

Fazit

Der Befehl git stash ist eine leistungsstarke Möglichkeit, Ihren Arbeitsbereich zu verwalten. Wenn Sie diesen Befehl beherrschen, können Sie effizienter arbeiten.

Weitere Studie:
  • https://git-scm.com/book/de/v1/Git-Tools-Stashing
Verweise:

Stack Overflow: wie man einen Stash-nach-Namen-in-git . benennt und abruft

Fügen Sie mit diesen kostenlosen Tools Mausgesten zu Windows 10 hinzu
In den letzten Jahren haben sich Computer und Betriebssysteme stark weiterentwickelt. Es gab eine Zeit, in der Benutzer Befehle verwenden mussten, um ...
Steuern und verwalten Sie Mausbewegungen zwischen mehreren Monitoren in Windows 10
Dual-Display-Maus-Manager lässt Sie die Mausbewegung zwischen mehreren Monitoren steuern und konfigurieren, indem Sie ihre Bewegungen in der Nähe der ...
Mit WinMouse können Sie die Mauszeigerbewegung auf einem Windows-PC anpassen und verbessern improve
Wenn Sie die Standardfunktionen Ihres Mauszeigers verbessern möchten, verwenden Sie Freeware WinMouse. Es fügt weitere Funktionen hinzu, damit Sie das...