Каково разрешение временных меток в Git или даты автора?
Из того, что я вижу, даты коммитов Git и дат авторов точны с точностью до одной секунды. Мне интересно, если это так точно, как они получают или я могу получить метку времени в миллисекундах или даже микросекундах.
Эта команда возвращает метку времени UNIX, используя хэш коммита первого коммита:
git show -s --format="%ct" 2d9afdfb9e2fa9b349312734b462bb7d57a684ee
Результат: 1421437899
Какова точность отметки времени в GIT?
2 ответа
Разрешение дат коммитов / авторов Git составляет 1 секунду, что, как отмечают Алексей Тен и Эдвард Томсон, также является разрешением меток времени Unix.
Интересный эксперимент, который вы можете провести, заключается в
- создать коммит и
- изменить его очень быстро, не меняя ничего (даже сообщения коммита).
Как вы, возможно, знаете, внесение изменений в коммит фактически создает новый коммит. Обычно новая фиксация будет иметь другую временную метку и, следовательно, другой идентификатор фиксации, чем у первой фиксации. Однако вы можете написать скрипт, который создает коммит и вносит в него изменения в течение одной и той же системной тактовой секунды (с небольшим количеством удачи!), Создавая тем самым коммит, чей хэш такой же, как у первого коммита.
Сначала настройте вещи:
$ mkdir testGit
$ cd testGit
$ git init
Затем запишите это в файл сценария (называется commitAmend.sh
ниже)
#!/bin/sh
# create content and commit
printf "Hello World.\n" > README.md
git add README.md
git commit -m "add README"
git log
# amend the commit
git commit --amend --no-edit
git log
и запустить его:
$ sh commitAmend.sh
[master (root-commit) 11e59c4] add README
1 file changed, 1 insertion(+)
create mode 100644 README.md
commit 11e59c47ba2f9754eaf3eb7693a33c22651d57c7
Author: Jubobs <xxxxxxxxxxx>
Date: Fri Jan 30 14:25:58 2015 +0000
add README
[master 11e59c4] add README
Date: Fri Jan 30 14:25:58 2015 +0000
1 file changed, 1 insertion(+)
create mode 100644 README.md
commit 11e59c47ba2f9754eaf3eb7693a33c22651d57c7
Author: Jubobs <xxxxxxxxxxx>
Date: Fri Jan 30 14:25:58 2015 +0000
add README
Та же временная метка, тот же хэш!
Это одна секунда; в то время как git-show
немного уточняет вывод, вы можете увидеть необработанную информацию о фиксации, используя git-cat-file
команда. Например:
% git cat-file commit HEAD
tree 340c0a26a5efed1f029fe1d719dd2f3beebdb910
parent 1ac5acdc695b837a921897a9d42acc75649cfd4f
author Edward Thomson <ethomson@edwardthomson.com> 1422564055 -0600
committer Edward Thomson <ethomson@edwardthomson.com> 1422564055 -0600
My witty comment goes here.
Вы действительно можете видеть, что это метка времени Unix с разрешением 1 секунда.