Pae*_*els 3 git visualization git-stash
我找不到很好的可视化git stash操作。所以我根据互联网上一些罕见的评论创建了自己的。
这个可视化正确吗?
编辑说明:我需要更改 的颜色,stash@{0}因为它没有分支。
stash 存储在我的.git目录中的什么位置?我认为它是一个参考并存储在 中refs,对吗?
传奇:
重新制作的图像
“之前git stash”和“之后git stash”图本质上是正确的(有两个新提交,不在任何分支上,由refs/stashaka指向stash@{0})。该图中缺少的是索引和工作树本身被重置,就像git reset --hard它一样 - 事实上,使用 git reset --hard-after git stash。
“之后git stash branch”图[编辑以匹配新图]更难绘制,但是:git stash branch使用idx和wd提交来恢复索引和工作树的状态,然后将它们完全从refs/stash. 这两个提交现在根本没有名称,因此有资格进行垃圾收集(git gc现在可以根据gc.pruneExpire您的配置在“修剪时间”方面在它们到期时立即删除它们)。新的分支名称test指向父提交,idx并WD指向该提交,回到何时idx并且WD仍然保证存在。
此时立即进行新提交 ( git stash branch <name> && git commit) 将根据恢复的索引进行新提交,就像在更新后的绘图中一样。
我的 .git 目录中存储的内容在哪里?
提交本身就是提交,因此像任何其他提交一样存储在.git/objects/(作为松散或打包的对象)中。
我认为它是一个引用并存储在 refs 中,对吗?
是的,refs/stash是参考。该git stash代码使用(或滥用?)的引用日志条目refs/stash管理“藏匿栈”,所以无论是哈希ID的refs/stash本身,以及所有那些在任何refs/stash引用日志条目,事:他们守WD承诺活着,直接指向它,并且因此也保持idx提交( 的^2或第二个父级WD)处于活动状态(因为它可以通过WD提交访问)。
| 归档时间: |
|
| 查看次数: |
1531 次 |
| 最近记录: |