什么是git的引用日志和日志的区别?什么是git的引用日志和日志的区别?(What's th

2019-05-12 16:39发布

该名男子页说,日志显示提交日志和引用日志管理引用日志信息。 到底什么是引用日志信息?它有日志不? 日志似乎更为细致。

Answer 1:

git log显示当前HEAD和其祖先。 也就是说,它打印提交HEAD点,那么它的母公司,其母公司,等等。 它穿越回通过回购的祖先,通过递归查找每个提交的父。

(在实践中,一些提交有多个父更要看到一个更有代表性的日志,请使用像这样的命令git log --oneline --graph --decorate 。)

git reflog不经过HEAD的祖先都没有。 该引用日志是HEAD一再指出,提交的有序列表:它是撤消历史记录您的回购协议。 该引用日志不是回购本身(它分别存储到本身的提交)的一部分,并且不被包括在推动,获取或克隆; 这是纯粹的地方。

旁白:了解引用日志意味着你可以一旦它被提交没有真正从您的回购丢失数据。 如果你不小心恢复到旧的提交,或重订错,或任何其他操作从视觉上“删除”承诺,你可以使用引用日志,看看你在哪里之前git reset --hard回到那个裁判恢复之前的状态。 请记住,裁判暗示不只是承诺,但它背后的整个历史。



Answer 2:

  • git log显示提交日志从裁判访问(头,标签,遥控器)
  • git reflog是现在或任何时候你都回购引用的所有提交的记录

这就是为什么git reflog ,当你做一个“破坏性”的操作(如删除一个分支)(这是默认后90天修剪本地记录)时,为了找回那种由该分支引用的SHA1。
git config

gc.reflogexpire
gc.<pattern>.reflogexpire

git reflog到期删除比这个时间早引用日志条目; 默认为90天。
用“ <pattern> ”(例如,“ refs/stash在中间”)的设置仅适用于匹配该裁判<pattern>

git reflog经常被引用为“ 你的安全网 ”

在故障情况下,一般建议,当git的日志不告诉你,你在找什么,就是:

保持冷静,并使用git reflog

同样,引用日志是你的SHA1的本地记录。
至于反对git log :如果你把你的回购协议的上游回购 ,你会看到相同的git log ,但不一定是相同git reflog



Answer 3:

这里的解释reflog从Pro Git的书 :

一件事做的Git在后台,当你在外打工是保持一个引用日志 - 日志在哪里你的头和分支引用已经在过去的几个月。

您可以通过看你引用日志git reflog

 $ git reflog 734713b... HEAD@{0}: commit: fixed refs handling, added gc auto, updated d921970... HEAD@{1}: merge phedders/rdocs: Merge made by recursive. 1c002dd... HEAD@{2}: commit: added some blame and merge stuff 1c36188... HEAD@{3}: rebase -i (squash): updating HEAD 95df984... HEAD@{4}: commit: # This is a combination of two commits. 1c36188... HEAD@{5}: rebase -i (squash): updating HEAD 7e05da5... HEAD@{6}: rebase -i (pick): updating HEAD 

每次你的分支顶端以任何理由,Git的商店,在这个临时历史记录您的信息更新。 您也可以指定与此数据较旧的提交,以及。

reflog命令也可以用于从太旧了引用日志删除条目,或到期的条目。 从官方的Linux内核的Git文档reflog

子命令expire被用来修剪旧的引用日志条目。

从引用日志删除单个项,使用子命令delete和指定确切的条目(例如git reflog delete master@{2}



Answer 4:

我很好奇这也只是想阐述和总结了一下:

  1. git log显示你所有的提交你所在分支的历史。 检出不同的分支,你会看到一个不同的提交历史。 如果你想看到你的提交历史所有分行,类型git log --all

  2. git reflog显示为蛋糕说你引用的记录。 有一个条目每次提交或它做了结帐。 尝试两个分支之间来回切换使用几次git checkout和运行git reflog每次结账后。 你会看到上面的条目被每一次的“结账”条目更新。 你不会看到这些类型的项目的git log

参考文献: http://www.lornajane.net/posts/2014/git-log-all-branches



Answer 5:

事实上,引用日志是一个别名

 git log -g --abbrev-commit --pretty=oneline

所以答案应该是:它是一个特例。



文章来源: What's the difference between git reflog and log?