存储行为是否随git版本而改变?

时间:2018-03-08 11:02:20

标签: git

我从遥控器中取出最新的更改后,我做了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。:我知道我应该更加满意,并且应该将我的更改提交给一些临时分支。

1 个答案:

答案 0 :(得分:0)

不幸的是,任何形式的问题“这里是一个散文描述我所做的和发生的事情,从记忆中;请解释它”并不是完全可以回答的。我认为我们能做的最好的事情是排除一些事情。

除非您以某种方式检查存储引用作为分支,否则reset命令不会更改存储堆栈。 (由于你没有指定你重置的 reflog条目,我运行了一些似乎是潜在边缘情况的测试;即使重置为存储本身,我也无法引发这种类型的失败。 )当我说“除非你以某种方式检查存储引用作为分支”......这可以通过直接操作HEAD文件来实现,但结果将是向列表中添加一个损坏的存储,不要删除当前的顶级藏匿处。

我不知道藏匿行为的任何变化。隐藏是否从堆栈中删除是stash applystash pop之间的差异,并且只要我知道git stash已经存在。我的历史知识肯定不是这里最广泛的,所以也许别人知道我不知道的事情,但我能找到的最古老的文档仍然在pop和apply之间划出同样的区别。