อ้างอิงจากgit-stash manpage , "การซ่อนถูกแสดงเป็นคอมมิชชันซึ่งทรีบันทึกสถานะของไดเร็กตอรี่การทำงาน, และพาเรนต์แรกของมันคือคอมมิทHEAD
เมื่อสร้าง stash," และgit stash show -p
ให้เรา "การเปลี่ยนแปลงที่บันทึกใน stash เป็นส่วนต่างระหว่างสถานะ stashed และ parent ดั้งเดิม
เพื่อให้การเปลี่ยนแปลงอื่น ๆ ของคุณยังคงอยู่ให้ใช้git stash show -p | patch --reverse
ดังต่อไปนี้:
$ git init
Initialized empty Git repository in /tmp/repo/.git/
$ echo Hello, world >messages
$ git add messages
$ git commit -am 'Initial commit'
[master (root-commit)]: created 1ff2478: "Initial commit"
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 messages
$ echo Hello again >>messages
$ git stash
$ git status
# On branch master
nothing to commit (working directory clean)
$ git stash apply
# On branch master
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: messages
#
no changes added to commit (use "git add" and/or "git commit -a")
$ echo Howdy all >>messages
$ git diff
diff --git a/messages b/messages
index a5c1966..eade523 100644
--- a/messages
+++ b/messages
@@ -1 +1,3 @@
Hello, world
+Hello again
+Howdy all
$ git stash show -p | patch --reverse
patching file messages
Hunk #1 succeeded at 1 with fuzz 1.
$ git diff
diff --git a/messages b/messages
index a5c1966..364fc91 100644
--- a/messages
+++ b/messages
@@ -1 +1,2 @@
Hello, world
+Howdy all
แก้ไข:
การปรับปรุงแสงนี้จะใช้git apply
แทนแพทช์:
git stash show -p | git apply --reverse
หรือคุณยังสามารถใช้เป็นชวเลขไปgit apply -R
git apply --reverse
ฉันพบว่ามันมีประโยชน์จริง ๆ เมื่อเร็ว ๆ นี้ ...