.git / log的目的是什么?

时间:2016-07-10 11:22:06

标签: git git-stash

我在搜索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重复引用?

3 个答案:

答案 0 :(得分:1)

他们是" reflogs"它记录了存储库中各种引用过去指向的历史记录。

git help reflog中查看git help logstart的文档。

如果您运行-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甚至在logsgit 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;将改为使用。

参考:gitrepository-layout