Überprüfen Sie, ob “git stash” etwas gespeichert hat

Lesezeit: 3 Minuten

Benutzer-Avatar
Hand-E-Food

Ich habe ein Windows-Befehlsskript zum Zusammenführen der Entwickler in einen Projektzweig verzweigen. Es beginnt mit dem Lesen des aktuellen Zweignamens, dem Stashing von Änderungen, dem Abrufen und Zusammenführen der dev- und project-Zweige, wechselt dann zurück zum ursprünglichen Zweig und öffnet den Stash.

Das Problem ist, dass es möglicherweise keine Änderungen an Stash gibt. Dadurch bleibt der vorherige Vorrat oben auf dem Stapel. Wenn es am Ende des Skripts ankommt und den Stash öffnet, wird der vorherige Stash geöffnet, der nichts mit dem aktuellen Zweig zu tun hat.

Set SourceBranch=dev
Set ProjectBranch=project

:: Stash current changes.
For /F "tokens=1,2" %%a In ('Git branch -q') Do If "%%a"=="*" Set CurrentBranch=%%b
Git stash save -u

:: Pull latest source branch.
Git checkout %SourceBranch%
Git pull
For /F "tokens=1,3" %%a In ('Git branch -q -v') Do If "%%a"=="*" Set MergeHash=%%b

:: Merge source into project branch.
Git checkout %ProjectBranch%
Git pull
Git merge --commit %MergeHash%||Exit 1

:: Return to original branch.
Git checkout %CurrentBranch%
Git stash pop

Wie erhalte ich Feedback von Git stash oder Git status um festzustellen, ob ich den Stash öffnen muss?

  • Es lohnt sich, das zu beachten git pull und git rebase habe jetzt ein --autostash Argument, mit einem entsprechenden rebase.autoStash Aufbau. Es wurde in Version 2.6 hinzugefügt.

    – Penz

    22. Dezember 2018 um 7:59 Uhr

  • Wenn Sie dies so bearbeiten, dass es eher Bash-ähnlich ist, kollidiert es damit, dass es sich um ein Windows-Befehlsskript handelt, und macht es tatsächlich ungültig. 😉

    – Hand-E-Food

    18. September 2019 um 21:22 Uhr

git stash ermöglicht es Ihnen, eine Nachricht zu übermitteln. Sie können ein generiertes Token als Ihre Nachricht verwenden, damit Sie wissen, dass es nicht zu Konflikten mit anderen Git-Stash-Nachrichten kommt.

Wenn Sie dann überprüfen möchten, ob es platzen soll oder nicht, überprüfen Sie einfach, ob die git stash list Ausgabe enthält Ihr Token. Wenn ja, öffne das Versteck.

  • Ich mag diese Antwort. Es ist robust

    – Neu-Alexandria

    27. Mai 2016 um 15:44 Uhr

  • Diese Vorgehensweise gefällt mir am besten. Hier sind die drei Zeilen, die ich am Ende verwendet habe. GIT_STASH_MESSAGE="${RANDOM}" git stash -m "${GIT_STASH_MESSAGE}" git stash list | grep "${GIT_STASH_MESSAGE}" && git stash pop --index

    – david.tanner

    21. April 2021 um 19:31 Uhr

  • @david.tanner Ist es git stash push -m "${GIT_STASH_MESSAGE}" Der von Ihnen erwähnte Befehl zum Verstauen mit einer Nachricht hat bei mir auf dem Mac nicht funktioniert. Das Hinzufügen von “Push” funktionierte jedoch

    – Shobhit Puri

    9. September 2021 um 20:55 Uhr

git stash list #get a listing of all stashes to parse
git stash show -p stash@{0} #replace 0 with number of relevant stash from list

  • Wie kann ich feststellen, ob etwas versteckt wurde? Wenn es keine Änderungen gibt, wird nichts gestasht und eine beliebige Anzahl von Stashes kann zuvor vorhanden sein.

    – Hand-E-Food

    1. Juli 2014 um 23:57 Uhr

  • Grep die Ausgabe von git stash list für den Zweignamen, an dem Sie interessiert sind. Dies setzt jedoch voraus, dass Sie keine anderen Stashes im selben Zweig haben (Sie schienen anzugeben, dass Sie dies nicht getan haben).

    – Neil Neymann

    2. Juli 2014 um 0:07 Uhr

Unter Linux können Sie verwenden git stash list | wc -l um die Anzahl der Stash-Einträge zu zählen. Wenn es nichts zu verstauen gab, gibt dies dasselbe vor und nach Ihrem tatsächlichen zurück git stash. Ich bin mir jedoch nicht sicher, ob Sie dies unter Windows verwenden können.

  • Ich kann es nicht glauben, aber ich werde es tun.

    – Ciro Santilli Путлер Капут 六四事

    18. September 2020 um 9:43 Uhr

  • Das sieht mir am robustesten aus.

    – geek-merlin

    5. März 2021 um 17:15 Uhr

Benutzer-Avatar
Neu-Alexandria

Du kannst git diff und überprüfen Sie die Ausgabe.

  • Wenn es keine gibt, dann gibt es nichts zu tun stash.
  • Wenn es eine Ausgabe gibt, dann können Sie grep um es nach bestimmten Dingen zu analysieren, die Sie benötigen.

Irgendein Problem mit dieser Strategie?

1282170cookie-checkÜberprüfen Sie, ob “git stash” etwas gespeichert hat

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy