Я вижу это в этом репозитории GitHub :
Что это значит? Как что-то может быть «написано 7 дней назад» и все же «совершено 14 часов назад»?
commit --date=
. Шверн объясняет это очень хорошо.
Я вижу это в этом репозитории GitHub :
Что это значит? Как что-то может быть «написано 7 дней назад» и все же «совершено 14 часов назад»?
commit --date=
. Шверн объясняет это очень хорошо.
Ответы:
У Git есть отдельная концепция автора (человека, который написал код) и коммиттера (человека, который передал его в хранилище). Точно так же могут быть разные даты для обоих. Они обычно одинаковы.
Вы бы хотели, чтобы они отличались в первую очередь, если человек, пишущий код или отправляющий исправление, не имеет принудительного доступа к хранилищу, как в проектах, которые используют списки рассылки для отправки исправлений. В этом случае, люди с нажимным доступом будет применять патч и запустить git commit
либо с --author
и --date
переключатели или с помощью переменных окружения GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL и GIT_AUTHOR_DATE (задокументировано в мерзавце-фиксации дереве .
Другой случай - использование git cherry-pick
или git rebase. Коммиттер - это человек, который делает выбор вишни, а автор - автор оригинального коммита. Git будет управлять установкой личности автора и даты для вас.
Вы можете увидеть эту информацию в хранилище с git log --pretty=fuller
.
commit 21550561941b078ea1862b882ec89f26696ff5bb (HEAD, origin/master, origin/HEAD, master)
Author: thiagopnts <thiagopnts@gmail.com>
AuthorDate: Tue Nov 18 14:52:49 2014 -0200
Commit: Thiago Pontes <email@thiago.me>
CommitDate: Tue Nov 25 09:46:58 2014 -0200
open repository url if confirmed, closes #1
git rebase
также приводит к тому, что дата фиксации обновляется, а дата автора остается неизменной.
Это похоже на сочетание между тем, как Git работает с датами, и тем, как на него ссылались закрывающие ключевые слова GitHub .
Git разделяет даты коммитов и авторов. В Pro Git они немного отличаются :
Автор - человек, который первоначально написал работу, тогда как автором является человек, который последним применил работу. Таким образом, если вы отправляете патч в проект, и один из основных участников применяет патч, вы оба получаете кредит - вы как автор, а основной участник как коммиттер.
Таким образом, хотя сам код был зафиксирован / написан «7 дней назад» (локально), он не был «применен» или исправлен к коду до «14 часов назад», поскольку он не был виден в удаленном режиме до тех пор, пока на него не ссылались сообщение.