Що означає "автор 7 днів тому; вчинено 14 годин тому »означає на GitHub?


21

Я бачу це в цьому сховищі GitHub :

введіть тут опис зображення

Що це означає? Як щось можна "створити 7 днів тому", а ще "скоїти 14 годин тому"?


Чи може Git вимірювати часові позначки між файлами, які він редагував, і коли він насправді робив і натискав? Я не бачу використання такої функції, але це щось на зразок того, що має на увазі формулювання ..
Сет,

@Seth Ось що я думав спочатку, але я ніколи навіть не чув, щоб Git робив щось із позначками часу.
Скасувати

@Seth Git ігнорує часові позначки файлів. Комітер може змінювати часові позначки автора на ходу за допомогою commit --date=. Шверн це дуже добре пояснює.
ADTC

@ Undo Я сподіваюся, що ви не плутаєте "14 годин тому" з "14 днів тому" ... Тепер це було б по-справжньому дивно, щоб було зроблено щось, що, мабуть, навіть не було автором до 7 днів пізніше ... Я " m не впевнений, чи Git перешкоджає встановленню авторської часової позначки більше, ніж часова мітка фіксатора; це, мабуть, не хвилює.
ADTC

Відповіді:


21

У Git є окреме поняття автора (особа, яка написала код) та виконавця (особа, яка вчинила його в сховище). Так само можуть бути різні дати для обох. Зазвичай вони однакові.

Ви хочете, щоб вони відрізнялися насамперед, якщо особа, яка пише код або подає патч, не має доступу до сховища, як у проектах, які використовують списки розсилки для подання патчів. У цьому випадку особа, яка має доступ до push, застосує патч та запустить git commitабо перемикачі --authorта,--date або використовуючи змінні середовища GIT_AUTHOR_NAME, GIT_AUTHOR_EMAIL та GIT_AUTHOR_DATE (задокументовано у дереві git-commit .

Інший випадок - використання 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

1
git rebaseтакож призводить до оновлення дати вчинення, тоді як дата автора залишається такою ж.
cjm

@cjm Ви маєте рацію! в цьому відношенні поводиться однаково. Це має сенс, відновлення можна вважати декількома вишнями.
Шверн

1
Для застосування патчів з пошти також існує git am , який автоматично приймає дату та автора з поштового повідомлення.
дельтаб

6

Це виглядає як суміш між тим, як Git працює з датами, і тим, як він посилався на ключові слова GitHub .

Git розділяє дати фіксації та дати автора. У Pro Git вони трохи розбігаються :

Автор - людина, яка спочатку написала твір, тоді як виконавцем - особа, яка останнім часом застосувала твір. Отже, якщо ви надсилаєте патч до проекту, і один з основних членів застосовує патч, ви обидва отримуєте кредит - ви як автор, а основний член як комітет.

Отже, хоча сам код був зроблений / написаний "7 днів тому" (локально), він не "застосований" або зафіксований до коду до "14 годин тому", оскільки його не було видно у віддаленому місці, поки цей посилання закрити повідомлення.


2
Поки я не перевіряв її, я не вірю, що інформацію про автора додали ключові слова Github. Ідентифікатори виконавця та автора та дати вписуються в ідентифікатор комітету. Якщо Github змінив будь-яке з них, це змінило б ідентифікатор фіксації на віддаленому кінці. Віддалені та локальні сховища розходяться. Автор не зміг би натиснути або потягнути, не змушуючи його.
Шверн

2
Здійснення не є тим самим, як натискання на віддалений. Пам'ятайте, що майже все в Git можна зробити локально, включаючи коміти. Ви можете здійснити спочатку (що дає обидві часові позначки) та натиснути пізніше (що лише завантажує комісію на віддалений, але не дає жодної позначки часу). Немає "часової позначки", оскільки неважливо знати, коли було здійснено натискання на комісію - її можна (і часто є) натискати та витягувати будь-яку кількість разів.
ADTC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.