![]() |
1
11
TL;博士历史不是 跑了 ,Git不是 显示 它 在Git中,历史 是 提交集。没有文件历史记录!
当您运行以下命令时
比较长的
每个提交都有一个唯一的哈希ID
每次提交都存储文件的快照(哈希ID)–Git将其称为 树 . 合并提交也是如此:合并提交与任何其他提交一样,都有一个树。 每次提交还存储您的姓名(作者和提交人)、电子邮件地址和时间戳,以便Git可以向您显示这些信息。它存储一条日志消息——无论您给它什么——以便Git也可以显示它。
Git存储在Committ中的最后一件事第二件事,真的,就在
线性历史很容易
在处理普通的非合并提交时,查看历史记录非常简单。我们只是从
最近的
提交,由以下分支名称标识
如果提交
如果我们将真正的散列ID替换为单个字母,为了让事情更简单,我们会得到如下结果:
犯罪
很容易显示线性历史,从时间的终点开始,从起点结束。Git只是一次选择一个提交并显示它。这就是:
does:它从一个commit开始,由
当您让Git显示提交时,您可以–实际上,您几乎总是–让Git将其显示为
色斑
,而不是作为快照。例如,
非线性历史更难
既然我们知道Git是反向工作的,那么让我们看看更复杂的历史,包括包含实际合并提交的历史。(我们不要因为
A. 合并提交 就是至少有两个父母的承诺。在大多数情况下,您不会看到包含三个或更多父项的提交它调用这些 八达通合并 ,它们不会做任何普通合并无法完成的事情,所以八达通合并主要是为了炫耀你的Git fu.:-)
我们通常通过以下方式进行合并
现在,假设你跑
Git对这个问题有一个通用的答案:当它向您显示合并提交时,它可以添加 二者都 提交到“提交尚未显示”队列的父级。当它显示普通的非合并提交时,它会将(单个)父级添加到同一队列。然后它可以在队列中循环,显示您一次提交一个,并将其父级添加到队列中。 当历史是线性的时,队列中一次有一个提交:一个提交被删除并显示,现在队列中有一个父级,您可以看到父级。
当历史记录有一个合并时,队列以一个提交开始,Git从队列中弹出提交并显示它,然后将双亲放入队列中。然后Git从两个父母中挑选一个给你看
最终Git试图
您可以使用查看连接
|
![]() |
2
2
一切都应该还在那里。尝试使用查看
|
![]() |
Harry · 如何在编译时获取克隆的git仓库的标签 6 月前 |
![]() |
Ooker · 如何从blob中删除秘密? 6 月前 |
![]() |
hasdrubal · git日志图智能分支过滤器 7 月前 |
![]() |
J. Doe · 为什么git中没有跟踪git文件? 7 月前 |