【发布时间】:2011-08-09 20:51:58
【问题描述】:
Git stash 似乎做了很多我想做的事情,只是编写脚本有点困难,因为如果你没有更改,那么 git stash; git stash pop 会做一些不同于你在存储库中有更改的事情.
看来git stash create 是该问题的答案,并且一切正常,除了一件事……我无法摆脱创建的存储。有什么办法可以摆脱隐藏的?
为了让 100% 清楚我在做什么:
创建存储:
~/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
使用存储:
~/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
#
删除存储:(除了最后一点不起作用)
~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference
【问题讨论】:
-
尽管时间上的距离很远,但我想向同行指出,在撰写本文时,在第二个代码框中运行的
git apply没有应用补丁 - 中的错误消息输出告诉你这一点。所以实际上,您尝试创建一个存储(不起作用,请参见下面的 cmets)应用一个未创建的存储,然后删除一个未创建的存储。这就是为什么你什么都没做。 -
@ProfessorTom 存储已创建,这就是它返回哈希码的原因,以及
git stash apply确实有效的原因。git apply尝试读取不存在的本地补丁文件。老实说,它可能只是不应该存在,而且它永远不会起作用。我隐约想把它从问题中删除,但鉴于它以目前的形式帮助了很多人,我将保持原样。