我从遥控器中取出最新的更改后,我做了git stash
,之后又做了git stash apply
。这导致了我想用git mergetool
解决的冲突,但不幸的是tkdiff打开了,我不熟悉。所以我想使用kdiff3(我熟悉)重试合并,但是git说没有文件需要合并(所以看起来tkdiff将状态改为合并,尽管文件仍然包含合并标记)。
所以我想,废弃它,我将使用reflog回到以前的状态。但是出于某种原因,我在stash list
检查时没有出现被隐藏的作品,stash@{0}
显示了我之前做过的更为陈旧的藏匿。
所以我的问题是:当我使用reflog(git reset --hard <reflog_id>
或者使用git版本以某种方式改变stash apply
行为时,我放弃了我的存储(我在该特定机器上使用的那个是古老的1.7) 0.1)?
P.S。:我知道我应该更加满意,并且应该将我的更改提交给一些临时分支。
答案 0 :(得分:0)
不幸的是,任何形式的问题“这里是一个散文描述我所做的和发生的事情,从记忆中;请解释它”并不是完全可以回答的。我认为我们能做的最好的事情是排除一些事情。
除非您以某种方式检查存储引用作为分支,否则reset
命令不会更改存储堆栈。 (由于你没有指定你重置的 reflog条目,我运行了一些似乎是潜在边缘情况的测试;即使重置为存储本身,我也无法引发这种类型的失败。 )当我说“除非你以某种方式检查存储引用作为分支”......这可以通过直接操作HEAD
文件来实现,但结果将是向列表中添加一个损坏的存储,不要删除当前的顶级藏匿处。
我不知道藏匿行为的任何变化。隐藏是否从堆栈中删除是stash apply
和stash pop
之间的差异,并且只要我知道git stash
已经存在。我的历史知识肯定不是这里最广泛的,所以也许别人知道我不知道的事情,但我能找到的最古老的文档仍然在pop和apply之间划出同样的区别。