我在搜索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重复引用?
答案 0 :(得分:1)
他们是" reflogs"它记录了存储库中各种引用过去指向的历史记录。
在git help reflog
中查看git help log
和start
的文档。
如果您运行-g, --walk-reflogs
,您会看到更多差异,因为diff -r
文件都包含一个提交,而refs/
包含一个历史文件。
请注意,查看logs/refs
目录通常不是在存储库中查找引用的好方法。除了"松散"之外,refs也可能只存在于refs/
中,并且在packed-refs
目录中没有相应的条目。
答案 1 :(得分:1)
<link rel="stylesheet" href="{% static 'home/css/{{ block css }}{{ endblock }}.css' %}">
目录是Git存储reflogs的目录。 Reflogs表示你的refs在某个早期时间点指向的内容。 Reflogs甚至在logs
,git commit --amend
等之后存储原始提交.Reflogs存储单个提交,即使在git rebase
提取了数十个提交之后。 Reflogs可以轻松撤消某些操作。
对于您拥有的所有裁判,以及您最近过去曾提到的所有裁判都存在正常情况。您通过使用git pull
命令在某个时间获得了stash
引用。即使你现在不再拥有那个ref,reflog也会记得。例如,这也允许您撤消意外分支删除。
答案 2 :(得分:1)
<强>日志强> 对refs所做更改的记录存储在此目录中。有关更多信息,请参阅git-update-ref 1。如果设置了$ GIT_COMMON_DIR并且&#34; $ GIT_COMMON_DIR / logs&#34;将改为使用。