Git的存储机制本质上是创建提交然后挑选它吗?

时间:2015-01-21 10:10:20

标签: git git-stash

我在工作目录中进行了更改,然后运行git stash。在我的.dir/refs目录中,我有一个名为stash的新引用,它是指向具有哈希2d05be16dcd0828c84d63f1e07ee78a2a28b3deb的对象的指针。我已经检查了对象的类型及其commit

$ git cat-file -t 2d05be16dcd0828c84d63f1e07ee78a2a28b3deb
commit

所以看起来stashing确实创建了一个提交。所以当我解开它时,它是否相当于采摘樱桃?

1 个答案:

答案 0 :(得分:0)

不完全,但它很相似。应用stashed更改会修改索引和/或工作树,但永远不会创建新的提交。在成功完成挑选后,索引和工作树将完全相同,并且将创建一个新提交。

那就是说,应用变化的方式几乎是一样的。 Git需要某种方式将更改从特定提交应用到任意树,使用git stashgit cherry-pick的不同实现是没有意义的。