Ich ging in eine Filiale und arbeitete. Ich wollte in eine andere Niederlassung gehen, wollte mich aber nicht festlegen, also tat ich es git stash
. Dann habe ich getan git checkout <otherbranch>
. Ich habe dort einige Arbeiten durchgeführt und wollte, genau wie in der ersten Niederlassung, vor der Ausführung der Arbeiten aussteigen. Also habe ich es auch git stash
dort gemacht. Ich wechselte zurück zum ersten Zweig und versuchte, ihn zu entstauen ( git stash pop
) , weil ich dachte, er würde den Stash von diesem bestimmten Zweig erhalten. Ich war überrascht, dass es den Vorrat von <otherbranch>
(zuletzt verstaut) gelöst hat . Ich hatte den Eindruck, dass Stash branchenspezifisch ist, aber dieses Verhalten zeigt an, dass es nur einen Stash für das gesamte lokale Repository gibt.
Ist git stash
branchenspezifisch oder für das gesamte Repository? Kann ich Optionen für das gesamte Repository übergeben, um es branchenspezifisch zu machen?
stash list
Elements zusätzlich zu nur einer Beschreibung anzeigen können ?git stash show
(odergit stash show stash@{<number>}
für etwas anderes als die@{0}
Version) gibt Ihnen einediff --stat
; hinzufügen-p
, um ein größeres Diff zu erhalten. Hinweis: Dadurch wird der "Arbeitsbaum" im "Stash Bag" mit dem Commit verglichen, an dem er hängt. Es gibt keine Front-End-Schnittstelle, um zu sehen, was im "Index" des angegebenen Stash-Bag enthalten ist.Nein und Nein. Git Stash ist pro Repository.
Hier ist eine schöne Seite, wie man es benutzt.
quelle
git stash
ist nicht pro Zweig.git stash
(was leicht verloren gehen kann, wenn Sie viele Verstecke und Zweige haben)git commit
zu tun , um den unfertigen Code in Ihrer Zweigstelle zu speichern, und wenn Sie bereit sind, den Code zu beenden, tun Sie agit reset ${COMMIT_HASH_VALUE}
, um den unfertigen Code zurückzubekommengit commit
undgit reset
bei der Verwendung zusammen richtig kann eine Simulationgit stash
für einen bestimmten ZweigHier ist ein allgemeines reales Szenario, das den Wert und die Verwendung der Befehle
commit
und demonstriertreset
:git commit
On-Feature-Zweig X ausführenCOMMIT_HASH_VALUE
für später aufgit reset ${COMMIT_HASH_VALUE}
(FYI der Standard für
git reset
IS--mixed
)quelle
git reset HEAD~1
.HEAD^1
oderHEAD~1
.Ich bin mir nicht sicher, warum jede Antwort hier vorschlägt, Stash mit
commit
+ zu emulierenreset
. Stash ist vollkommen in Ordnung, besonders wenn Sie an mehreren Zweigen arbeiten. Ich möchte mich auch nicht verpflichten, wenn ich an mehreren Zweigen arbeite, da ich möchte, dass alle geänderten Änderungen bei meiner Rückkehr immer noch in meinem Editor hervorgehoben werden.Hier ist also der Stash-Workflow:
Wenn Sie den Zweig wechseln müssen und nicht bereit sind, einen Commit durchzuführen, speichern Sie Ihre Änderungen im Stapel
Wenn Sie zu einer Filiale zurückkehren, überprüfen Sie den Vorrat
Wenn Sie auf einem Zweig sind, können
FixIssue0203
Sie verwenden,git stash pop
da dies die Oberseite anwendetstash@{0}
und sie aus dem Vorrat entfernt.Wenn Sie sich jedoch in einem Zweig befinden
ImproveReadme
, sollten Sie zuerst den Stash 1 anwendengit stash apply stash@{1}
und dann den Stash 1 vom Stapel entfernengit stash drop stash@{1}
.Das ist es!
quelle