比如,git 服务器上,项目代码的最新提交时间是 UTC +8 10:00
本地提交前,故意把时区改为 UTC +7, 提交代码后,git 是怎么处理的? 实际上服务器的最新提交比本地的要早。
1
CEBBCAT 2022-03-16 00:10:24 +08:00 via iPhone
没看明白,但 git 时间戳是有时区的,这个一搜便知
|
2
XiLingHost 2022-03-16 00:12:46 +08:00 1
时间戳是从 1970 年 1 月 1 日 00:00(GMT+0)开始所经过的秒数,不考虑闰秒,和时区无关
|
3
zinwalin OP 时间戳不也是根据本地计算机来算吗?
|
4
Explr 2022-03-16 00:23:17 +08:00 via Android
git 应该不保证提交时间不能伪造吧,应该只是简单的直接使用本地时间。git commit 命令甚至有一个参数--date 用来指定 author date 。
|
5
gadfly3173 2022-03-16 00:26:55 +08:00 via Android
更改时区并不会影响本地时间,得同时改掉时间。以及 git 的时间就是以本地为准,你甚至可以通过 force push 来完全伪造全部的提交记录。所以是否被篡改只能拉过代码的人自己根据日志去看
|
6
msg7086 2022-03-16 00:32:04 +08:00 2
时间戳是本地计算的呀。
如果只是改时区的话,时间戳本身是不变的。 如果你要改时间戳的话,当然是可以的,完全可以新建一个十年前或者十年后的提交,没有问题。 |
7
szzhiyang 2022-03-16 00:49:16 +08:00 2
Git 的同步依据不是时间,而是链表结点的顺序。
|
8
Vegetable 2022-03-16 00:54:56 +08:00 2
两个问题
1.时间戳与时区无关 2.git 提交记录的时间毫无意义 |
9
dingwen07 2022-03-16 01:08:14 +08:00 1
@gadfly3173 #5
是否被原作者之外的人篡改应该通过验证 GPG 签名来进行验证 |
10
SoloCompany 2022-03-16 01:13:11 +08:00
git 是去中心化数据库, 请自动朗读三遍
|
11
jinliming2 2022-03-16 01:30:41 +08:00
1 ,时间与时区无关,时区只用来表示地区。2022/03/16 10:00:00 +08:00 与 2022/03/16 09:00:00 +07:00 表示的是完全相同的时间,只不过地区不一样。
2 ,时间戳也是有时区信息的,时区信息存在于它的定义中,定义指明了它表示的就只能是 UTC 时区的时间。 3 ,Git 只记录两次 commit 之间的变化。git 不在乎时间,时间仅作为 commit 的一个属性,git 同步本身不使用时间属性做任何参考。因此,即便是你本地计算机的时间不正确,对 git 也没有任何影响。新的 commit 时间完全可以早于旧的 commit 。 |
12
jiangzm 2022-03-16 01:37:51 +08:00 1
同一个时间点可以用不同的时区表示形式,假如你本地改成了东九区时刻会比北京时间快一小时但是时间点是一样的。
数值也是一样的,二进制的 1 、十进制的 1 、十六进制的 1 是相等的,表示形式不一样而已。 git commit 不管你的时间点,只和 commit 的顺序有关系。 |
13
js8510 2022-03-16 02:06:13 +08:00 1
git commit time, author, email 通通可以改。。(但是改时区没有用,因为 UTC 不变)。就是一个 metadata.
git commit time 可以伪造。包括 remote master 的 commit log , 一样可以伪造。 但是问题是如果有多个 clone,你改不了其他人的 clone 呀。 |
14
ngn999 2022-03-16 05:41:20 +08:00 via iPhone
简单来说,时间和时刻的意思不一样!
|
15
zinwalin OP @gadfly3173 好的,我的意思就是改掉本地的时间。
|
17
zinwalin OP @jinliming2 所以 git 的历史,只关心提交顺序?
|
18
julyclyde 2022-03-16 11:32:10 +08:00 1
@zinwalin git 其实是个逆向链表
从 branch/tag 指向 commit ,commit 再指向前一个 commit |
19
detached 2022-03-16 14:21:14 +08:00 1
怎么感觉 OP 是在问,分布式系统中时间的同步问题?可以看下 Cam 这个 ppt ( cl.cam.ac.uk/teaching/0910/ConcDistS/10a-Time.pdf )
|
21
jinliming2 2022-03-17 00:09:40 +08:00
@zinwalin git 除了创世 commit 外,其他的 commit 都是基于上一个 commit 的变化而来、或者多个 commit 合并而来。
因此说只关心顺序倒也没啥问题。只不过这个顺序指的是 commit 历史的相对顺序,而不是时间顺序。 |
22
zinwalin OP @jinliming2 谢谢分享
|