問題

Git stash似乎做了很多我想要的事情,除了它有點難以指令碼,因為如果您沒有更改,那麼git stash; git stash pop將做一些不同的事情,如果您在儲存庫中做了更改.

似乎git stash create是該問題的答案,一切都有效,除了一件事....我無法擺脫建立的stash.有沒有辦法擺脫stash?

要讓它100%清楚我正在做什麼:

建立stash:

 ~/tmp/a(master) $ git stash create 
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message
 

使用stash:

 ~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#
 

刪除stash:(除了最後一位不起作用)

 ~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
 

  最佳答案

要刪除使用 git stash 建立的正常 stash,您需要 git stash dropgit stash drop [email protected]{n}


您不需要刪除使用git stash create建立的stash.從文件中:

建立一個stash條目(這是一個常規的提交物件)並返回其物件名稱,而不在ref名稱空間中的任何地方儲存它.這對指令碼有用.它可能不是您想要使用的命令;見上面的“儲存”.

由於沒有引用 stash 提交,它將最終收集垃圾。


使用git stashgit stash save建立的stash儲存到refs/stash,並可以使用git stash drop刪除.與所有Git物件一樣,實際的stash內容不會從計算機中刪除,直到gc在這些物件過期後加入(預設為2周後).

舊的灰塵儲存在refs/stash reflog (try cat .git/logs/refs/stash)中,並且可以用git stash drop [email protected]{n}刪除,其中ngit stash list顯示的數字.

  相同標籤的其他問題

git