如何在git隐藏保存--保留索引之前重新启动状态?

如何在git隐藏保存--保留索引之前重新启动状态?,git,Git,我在做什么 cd $(mktemp -d) git init . echo a > a git add a git commit -m "Initial commit" echo b > b git add b echo c > b git stash save --keep-index 现在,如果我这样做了 git stash apply --index 或 我得到了b的合并冲突。使用git stash push--keep index不会更改结果 我想进入git sta

我在做什么

cd $(mktemp -d)
git init .
echo a > a
git add a
git commit -m "Initial commit"
echo b > b
git add b
echo c > b
git stash save --keep-index
现在,如果我这样做了

git stash apply --index

我得到了
b
的合并冲突。使用
git stash push--keep index
不会更改结果


我想进入git stash save之前的状态,它的内容为
b
,内容为
b
已暂存,内容为
c
的状态为未暂存更改。

我发现通常最好在工作树干净时弹出隐藏。如果使用
pop--index
,尤其如此,因为使用此选项无法解决冲突

如果您在创建隐藏时没有使用
--keep index
选项,那么它会将您的状态重置为上一次提交,随后的
git stash pop--index
也可以正常工作


如果您的测试有意模拟这样一种情况,即出于某种原因,您希望在保存索引状态的同时保持其修改状态,但随后又希望重新应用该存储以返回到开始的位置,那么您必须首先将索引和工作树返回到上一次提交的状态(运行
git status
以查看需要执行的操作),然后您将能够干净地弹出存储库。

这是正确的答案;为了确保干净,您需要
git reset--hard
或同等工具。如果您进行了正常的、完整的存储,则使用
git reset--hard
是正确和安全的;如果使用PathSpec进行了一次存储,则更为棘手。
git stash pop --index