【问题标题】:Are git tags faster to access than git commits?访问 git 标签是否比 git 提交更快?
【发布时间】:2016-02-08 20:28:19
【问题描述】:
我不确定问题的标题是否最合适。
我在文本文件中有数据。这些数据每天都在变化/增长。我将保存这些数据的目录保存在源代码控制下,git。
每天结束时,我发出一个命令:
git commit -m "EOD YYYYMMDD"
通常,我需要查看过去某一天的数据是什么样的。
- 使用标签和提交有区别吗?
- 标签的访问速度是否比提交更快,也就是说,在过去某天的 EOD 的帮助下,使用标签而不是提交来签出给定文件是否更快?
- 1 是否比另一个更节省空间? (我的目录大小是 3Gigs 的文本)
【问题讨论】:
标签:
git
git-commit
git-tag
【解决方案1】:
标签指向提交。除非有提交指向它,否则您无法创建标签。所以这里没有真正的选择。
(至于空间,一个标签总是比没有标签消耗更多的空间,但标签只是短文本文件,所以创建一千个标签最多只能净赚几兆。)
您当然可以创建名为(例如)eod-20160208 的标签在进行一天结束提交后,然后通过运行简单的 git checkout eod-20160208 来检查当前的代码.这比查看您最近提交的带有相关提交消息的提交更容易,但并不比完全跳过标签并运行git checkout 'master@{2016-02-08}' 更容易。
这让我想到了另一点:Git 会为您记录日期。我不会说你使用它错,因为 Git 支持各种不同的工作流程;但是将日期放在提交消息中有点多余。如果您使用git log、gitk 或其他方式查看您的提交历史记录,则日期列在提交消息旁边。所以我建议使用-m 来描述您所做的更改,而不是指定您何时进行更改。这个策略可以帮助我更快地找到我正在寻找的改变。
【解决方案2】:
一个 git 标签指向一个提交;没有后者,前者就没有真正的意义。如果您希望能够查看过去某一天的数据是什么样子,您必须提交它;这就是提交的目的。长话短说,你做得对。
【解决方案3】:
如果不清楚:使用标签并不意味着您不再需要提交。 (带注释的)标签只不过是带有一些额外元信息的提交,而轻量级标签实际上只是指向提交的指针(如分支)。
所以问题 3 的答案肯定是否定的。
对于问题 2:结帐不会更快,但如果您例如不知道提交消息的确切内容,您可能更容易列出可用标签并找到您正在寻找的提交 - 仅仅是因为它们较少。
最后是您的第 1 个问题:同样,标签只是提交的注释,旨在让您更轻松地找到对您具有特殊意义的文件的某个版本。
【解决方案4】:
1.使用标签和提交有区别吗?
没有。标签只是一个小标签,更易于人类理解,指向提交。
- 标签的访问速度是否比提交更快,也就是说,在过去某天的 EOD 的帮助下,使用标签而不是提交来签出给定文件是否更快?
不,因为最后,您检查了标记指向的提交。在签出时间中唯一起作用的是目标工作目录与当前工作目录的距离(应该从一个应用到另一个应用的更改!)
- 1 是否比另一个更节省空间? (我的目录大小是 3Gigs 的文本)
标签几乎就位,但这不是存储数据的地方(即提交)。标签只是一种方便的方式来记住一些重要的提交,以便将来更容易地找到它们。