versteckt etwas code, aber nicht wissen, welche stash es ist die - wie herausfinden?
Schrieb ich erhebliche code für eine Funktion und verstaut die änderungen im git.
Danach schob ich einige änderungen in das repository und habe ein git stash und die Anwendung mehrere Male Lesen (über 100 mal).
Nach fast 2 Monaten, die ich nun abrufen möchten, die änderungen aus dem git-stash –
aber ich kann Sie nicht finden, egal was.
Versucht, mehrere git stash apply
, git stash list
, git stash list -p
. Nichts funktioniert. Ich kann nicht finden, die alte versteckt sich ändert.
Wünschte, ich hätte eine Sicherung statt Vertrauen git zu verstauen Sie...seufz...
Kann jemand helfen?
- mögliche Duplikate von Git: wie unstash nur bestimmte Dateien?
- Ein Vorrat gehalten wird, nur im repository, die gespeichert wurde ursprünglich, es ist nicht kopiert mit clone, push oder pull. Laufen Sie im gleichen repository? Haben Sie jemals überprüfen Sie, diesen änderungen im KOPF?
- Habe die Ausgabe von
git stash list
alles anzeigen - Git-stash ist nicht eine zuverlässige langfristige Speicher für änderungen. Es ist generell besser, sich zu binden und Sie bewegen Sie Sie beiseite in einem separaten Zweig.
- Braun - ja, es ist das gleiche repository, nicht geklont nach diesem schicksalhaften git-stash. "git stash list" zeigt eine ganze große Liste.
- Dass andere Frage zu sein scheint, sprechen die {0} stash. Aber mein problem ist, ich weiß nicht, wo meine änderungen sind verstaut und die stash Anzahl werden Sie auf
- gut, suchen Sie in den lagern wie
git show 'stash@{0}'
,git show 'stash@{1}'
etc. um den code zu finden. die einfachen Anführungszeichen sind wichtig, weil{
ist ein bash-Metazeichen. - Ah, Sie können formulieren Sie Ihre Frage -, wie "ich packte etwas code, aber nicht wissen, welches Versteck es ist in'
- Danke @Alex Brown - die Spitze über 'stash@{0}" hat
- FYI: Sie können mit git stash show 0, git stash show 1, etc... ich habe nicht gesehen, dass es irgendwo dokumentiert, aber es funktioniert zumindest im git-version 2.19.0
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Finden Sie Ihre Dateien in der Liste. Es könnte eine Weile dauern.
Eins:
git stash apply
nicht verwerfen ein Versteck. Nach einer erfolgreichen anwenden, sollten Siegit stash drop
so dass es dos nicht Unordnung Ihre Liste. Ich persönlich gelten der Vorrat mitgit stash pop
.git stash list -p
, ich hatte nicht gesehen, dass vor.git stash pop
böse?Suche innerhalb der Veränderungen, die in Ihr lagern, verwenden
git stash list
mit der Spitzhacke option-G
(ausgit log
):git log
Optionen.Hinweis: im Falle von versteckt zusammengeführt Begehen, ein
git stash list -p
würde nichts zurück.Das wird sich ändern mit Git 2.2 (Q4 2014) und commit 288c67c von Jeff King (
peff
):stash
: Standard-Auflistung zu arbeiten-tree-diffWenn Sie nur ein paar Verstecke aufgelistet in
git stash list
dann können Sie überprüfen Sie Sie eins nach dem anderen zu sehen, wenn Sie die richtige:etc.
Wenn Sie etwas code in viele lagern, und kann mich erinnern, einen string oder ein Schlüsselwort, das Sie eingegeben haben, in einer Datei, die (fast) eindeutig identifiziert, dass der code den ich verwenden
DUNKIRK
hier), suchen Sie Sie mithilfe der folgendenbash
Befehl.beachten Sie, dass git-grep durchsucht die ganze Kasse, nicht nur die änderungen.
Vergleichen Sie die Antwort von @siri, die sucht nach Dateinamen, die sich geändert in den lagern - das ist eine weitere nützliche Strategie.
Alternativ, Suche nur die diffs
und dann suchen Sie nach Ihren strings ODER Dateien, oder einfach durchsuchen. Dies könnte groß sein.
git reflog -p stash
ist wahrscheinlich die gleiche Logik wiegit stash list -p
von @siri die Antwort.Dies ist der Befehl, den ich verwenden. Es hilft mir zu identifizieren, die stash bezeichnet wird.
Ich es auch verwenden, in Verbindung mit einem alias in meine
.bashrc
Datei etwa so:Dem Endergebnis, dass ich mit meiner Suche git lagern so:
githunt LoanApplicationFee
und erhalten die folgenden Ergebnisse, wo kann ich schnell sehen, dass stash 45 hat, was ich Suche:
Einer Kombination von git-Befehle aus der oben genannten Antworten, hat mir geholfen, mit dem, was ich brauche. Die Veröffentlichung meiner Antwort hier, da es vielleicht anderen helfen und weil ich nicht akzeptieren jede einzelne Antwort/Kommentar