Чи є спосіб змусити git-reflog показувати дату поруч із кожним записом?


304

Команда git-reflog за замовчуванням не показує дату поруч із кожним записом, що сприймає мене як дивний контроль; Я думаю, це було б дуже корисно.

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

Відповіді:


452

Як пише чоловіча сторінка, ви можете використовувати варіанти git log, скажімо, git reflog --pretty=shortабо будь-які інші, як вам подобається

спробуйте

git reflog --date=iso

11
Це замінює номер голови (або будь-який правильний термін) датою. Ви можете мати обоє?
Марко Екштайн

7
@Marco, здається , вам доведеться використовувати користувальницький формат: git reflog --format='%C(auto)%h %<|(17)%gd %C(blue)%ci%C(reset) %s'. Я додав псевдонім для цього: github.com/blueyed/dotfiles/commit/…
blueyed

1
@blueyed Не зовсім те саме - --date=isoкоманда reflog показує, коли була створена запис рефлогу, а не час здійснення. Все-таки цінуй твій псевдонім, оскільки я використовував його для того, щоб зробити гарнішу ретрологію.
Йохан Хенкенс

36

Ви можете використовувати --walk-reflogsваріант git log:

git log -g

За замовчуванням це досить багатослівно і друкує дату серед іншого. Ви можете відформатувати його за допомогою стандартного --pretty=прапора.

Ви також можете використовувати команду reflog безпосередньо з --pretty=прапором для форматування виводу.

git reflog --pretty='%cd %h %gd %gs'

У форматі, наведеному вище, %cdвідображається дата фіксації зліва від нормального виходу рефлогу.


9
%cd, показує дату вчинення, на яку вказує рефлог, на жаль, на яку я (або ОП) не є після: ми хочемо дати запису рефлогу.
Танатос

10
git log --walk-reflogs --date=isoщойно зробив свій день
Алоїз Магдал

7

Ви повинні скористатися спеціальним форматом:

git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'

У наведеному вище форматі %hє хеш фіксації, %crє відносною датою виконання, %gsє предметом рефлогу, і, %sє предметом фіксації. Перегляньте документи git-log для інших можливих заповнювачів. Наприклад, використання %ciзамість %crцього покаже абсолютні дати фіксації.

Ви можете зберегти це у вашому ~ / .gitconfig за допомогою користувацького prettyформату та посилатися на нього через псевдонім:

[alias]
    rl = reflog --pretty=reflog
[pretty]
    reflog = %C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)

1
Проблема в цьому полягає в тому, %gdщо не вказано тієї самої дати, як @{now}і. Під час пошуку рефлогу, знання точного часу може бути дуже важливим (наприклад, "я знаю, що він був у правильному стані о 8:57").
ErikE

2
@ErikE - Просто змініть crна, ciщоб отримати повну часову git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
позначку

6

Розкажіть gitу якому форматі: чи підраховували reflogзаписи, так і приурочували reflogзаписи, тобто

$ git reflog @{now}

$ git reflog @{0}

Програмісту в мені не подобаються дати "природної мови" всередині {}, але, на щастя, ця методика також працює --date=iso.
mwfearnley

5

Примітка git 2.10 (Q3 2016) покращує документацію про дату з git reflog.

Див. Команду 642833d , фіксування 1a2a1e8 (27 липня 2016 р.) Та виконання d38c7b2 , здійснення 522259d , здійснення 83c9f95 , здійснення 2b68222 (22 липня 2016 р.) Jeff King ( peff) .
Допоможи: Джефф Кінг ( peff) .
(Об’єднано Хуніо С Хамано - gitster- у комітці 0d32799 , 08 серпня 2016 р.)

В rev-listопції оновлюється :

Обозначник рефлогу на виході може бути показаний як ref@{Nth}(де Nthреверсно-хронологічний індекс у рефлогу) або як ref@{timestamp}(із позначкою часу для цього запису), залежно від кількох правил.

Вона включає : - оновлення про --date=raw:

показує дату як секунду з епохи (1970-01-01 00:00:00 UTC), після якої пробіл, а потім часовий пояс як зміщення від UTC (а +або -з чотирма цифрами; перші два - години, і другі дві - хвилини).
Тобто, як ніби часова марка відформатована strftime("%s %z")).
Зауважте, що -localпараметр не впливає на seconds-since-epoch значення (яке завжди вимірюється в UTC), але змінює супровідне значення часового поясу.

І новий варіант: --date=unix

показує дату як часову позначку епохи Unix (секунди з 1970 року).
Як і у випадку --raw, це завжди в UTC і тому -localне має ефекту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.