在搜索git保存存储提交的位置时,我注意到了.git/log。认定:
$ ls .git/logs/
HEAD refs
$ diff .git/refs/ .git/logs/refs/ | head -n3
Common subdirectories: .git/refs/heads and .git/logs/refs/heads
Common subdirectories: .git/refs/remotes and .git/logs/refs/remotes
diff .git/refs/stash .git/logs/refs/stash 意思是stash -是logs下唯一的唯一文件。但它并没有说明这个文件夹的基本原理。那么,.git/log的目的是什么,为什么git重复引用呢?
发布于 2016-07-10 11:34:11
发布于 2016-07-10 11:28:56
它们是"reflogs“,它记录了存储库中各种引用在过去所指向的位置的历史。
请参阅git help reflog和-g, --walk-reflogs在git help log中的文档。
如果您运行了diff -r,您将看到更多的差异,因为refs/文件都包含单个提交,而logs/refs包含一个历史文件。
请注意,通常情况下,查看refs/目录并不是在存储库中查找推荐的好方法。除了“松散”之外,refs也可能只存在于packed-refs中,而在refs/目录中没有相应的条目。
发布于 2016-07-10 11:29:55
logs目录是Git存储https://git-scm.com/docs/git-reflog的地方。刷新指示您的裁判在某个较早的时间点指向什么。即使在git commit --amend、git rebase等之后,刷新日志也会存储原始提交。即使在git pull输入数十次提交之后,git pull也会存储单个提交。Reflog使撤销某些操作变得很容易。
对于你所有的裁判和你最近所拥有的所有裁判来说,翻拍都是正常的。通过使用stash命令,您已经有了一段时间的git stash引用。即使你现在已经没有那个裁判了,雷夫记得。例如,这允许您撤消意外的分支删除。
https://stackoverflow.com/questions/38291337
复制相似问题