Git -Versteck mit Namen

Git -Versteck mit Namen

So git du deine Änderungen mit dem zugeordneten Namen ab und findet ihn anschließend

Entwickler müssen oft Multitasking. Möglicherweise arbeiten Sie an einer neuen Funktion und es gibt möglicherweise eine Anfrage, einen Fehler zu beheben. Oder Sie sind möglicherweise der Hauptentwickler bei mehreren Projekten.

Wenn Sie zwischen Aufgaben wechseln, möchten Sie manchmal keine unvollendeten Arbeiten begehen. In diesen Fällen kann der Befehl git stash eine große Hilfe sein. Sie können Ihre Änderungen stapeln und später zu den unvollendeten Arbeiten zurückkehren, ohne Ihren Git -Repositories unnötige Commits hinzuzufügen.

Ein Workflow für Git Stash

Lassen Sie uns einen Git -Master -Zweig initialisieren und eine Datei Readme begehen.txt.

$ mkdir my_project
$ cd my_project/
$ git init
$ touch Readme.txt
$ git add -a
$ git Commit -m "initialisieren"

Fügen wir nun eine andere Datei mit dem Namen a hinzu.txt zum Master -Zweig.

$ touch a.txt
$ git add -a
$ Git Commit -m "fügte a hinzu.txt"

Wenn Sie den Geschichte überprüfen, werden Sie sehen:

$ Git -Protokoll -Einmal
d79f7aa fügte a hinzu.txt
9434d7e initialisieren

Erstellen wir nun einen Feature1 -Zweig und fügen ein B hinzu.TXT -Datei:

$ Git Branch Feature1
$ git checkout feature1
$ touch b.txt
$ git add -a
$ Git Commit -m "fügte B hinzu.txt"

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

Ich bin dabei, dies in ..

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

$ Git Status
Auf Branch Feature1
Änderungen, die nicht für Commits inszeniert sind:
(Verwenden Sie "Git add ...", um zu aktualisieren, was begangen wird)
(Verwenden Sie "Git Checkout - ...", um Änderungen im Arbeitsverzeichnis abzuwerfen)
Modifiziert: b.txt
Keine Änderungen hinzugefügt zu Commit (verwenden "Git Add" und/oder "Git Commit -a"))

Angenommen, Sie erhalten in dieser Phase eine Anfrage, um das a zu aktualisieren.TXT -Datei in der Master -Filiale. Aber du bist nicht mit dem b fertig.TXT -Datei. Wenn Sie versuchen, den Master -Zweig zu überprüfen, erhalten Sie den folgenden Fehler:

$ Git Checkout Master
Fehler: Ihre lokalen Änderungen an den folgenden Dateien werden durch Checkout überschrieben:
B.txt
Bitte verpflichten Sie Ihre Änderungen oder verstauen Sie sie, bevor Sie die Äste wechseln können.
Abbrechen

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

$ git stash
Speichern Arbeitsverzeichnis und Indexstatus -WIP auf Feature1: 2CFE39B hinzuge B -B -State -State -WIP.txt
Der Kopf ist jetzt bei 2CFE39B hinzugefügt B.txt

Wenn Sie B überprüfen.txt, es sollte leer sein:

$ cat b.txt
$

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

$ git stash liste
stash@0: WIP auf Feature1: 2cfe39b hinzuge B -B -B -WIP b.txt

Wenn Sie versuchen, den Master -Zweig zu überprüfen, sollten Sie dies jetzt tun können:

$ Git Checkout Master
Zum Branch "Master" umgestellt

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

$ git checkout feature1

Dein B.txt ist immer noch leer:

$ cat b.txt
$

Wenn Sie jedoch die Änderungen aus dem Vorrat mit dem folgenden Befehl erhalten:

$ git stash bewerben
Auf Branch Feature1
Änderungen, die nicht für Commits inszeniert sind:
(Verwenden Sie "Git add ...", um zu aktualisieren, was begangen wird)
(Verwenden Sie "Git Checkout - ...", um Änderungen im Arbeitsverzeichnis abzuwerfen)
Modifiziert: b.txt
Keine Änderungen hinzugefügt zu Commit (verwenden "Git Add" und/oder "Git Commit -a"))

Der Befehl für den Antrag auf Verstöße nahm die Verderben vor und wandte sie auf B an.TXT -Datei
Sie können Ihre Arbeit in B erledigen.txt meine Änderung der Linie

Ich bin dabei, dies in ..


Zu

Ich bin dabei, dies auf getan zu ändern

Jetzt mach weiter und verpflichte deine Änderungen:

$ git add -a
$ git Commit -m "modifiziert B.txt"

Wenn Sie einen Vorrat anwenden. Sie müssen es manuell aufräumen:

$ Git Stash Drop
Fallengelassene Refs/Stash@0 (0A66A16B32633E8D564D08E38254C491C1B1D3BE)

Warum git mit Namen git verstorben?

Der Git -Vorrat ist ein Stapel. So können Sie Ihre Änderungen weiter ansammeln.

Angenommen, Sie fügen "x" zu B hinzu.txt, verspülen Sie es, fügen Sie ein "y" zu b hinzu.txt, verspülen Sie es und fügen Sie B zu B ein "Z" hinzu.txt und verstauen es. Wenn Sie den Stash -Geschichte überprüfen, werden Sie so etwas sehen:

$ git stash liste
stash@0: WIP auf Feature1: 2D6F515 Modifiziert B.txt
stash@1: WIP auf Feature1: 2D6F515 Modifiziert B.txt
stash@2: WIP auf Feature1: 2D6F515 Modifiziert B.txt

Sie haben keine Möglichkeit zu wissen, welcher Vorrat welche Veränderung hat. Wenn Sie festlegen, können Sie die Option Speichern verwenden, um Kommentare einzugeben. Sie können die Kommentare verwenden, um Ihrem Vorrat einen Namen anzuhängen und sie erkennbar zu machen:

$ git stash sparen "x"
Speichern Arbeitsverzeichnis und Indexstatus auf Feature1: x
Der Kopf ist jetzt bei 2D6F515 modifiziert B.txt

Um "x", "y" und "z" -Modifikation hinzuzufügen, können Sie mit der Option Speichern für jeden Vorrat Folgendes in Ihren Vorrat erhalten:

$ git stash liste
stash@0: auf feature1: z
stash@1: auf feature1: y
stash@2: auf feature1: x

Jetzt haben Sie einen Namen für jede Änderung, die Sie versteckt haben. Leider können Sie den Namen nicht verwenden, um den Vorrat abzurufen. Sie müssen die Stash -Nummer verwenden. Angenommen, Sie möchten Ihre "Y" -Veränderung bekommen. Sie sehen, dass der Stash@1 y ist. Sie können diese Änderung also auf Ihren aktuellen Zweig anwenden:

$ git stash anwenden stash@1

Und dein b.TXT sollte die Änderungen von stash@1 haben.

Sie können dieselbe Methode verwenden, um einen Vorrat fallen zu lassen. Angenommen, Sie erkennen, dass Sie den X -Stash nicht mehr brauchen. 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 feature1: z
stash@1: auf feature1: y

Denken Sie daran, dass wenn Sie die Optionen für Anwenden und Drop ohne Parameter verwenden, es die Oberseite des Stapels verwenden (Stash@0).

Abschluss

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

Weiteres Studium:
  • https: // git-scm.com/book/en/v1/git-tools-stashing
Verweise:

Stack-Überlauf: How-to-name-and-Retrieve-a-Stash-by-name-in-Git