Git-reflog'un her girdinin yanında bir tarih göstermesine neden olmanın bir yolu var mı?


305

Git-reflog komutu varsayılan olarak her girişin yanında bir tarih göstermez, bu da bana garip bir gözetim olarak dikkat çeker; Bunun çok yardımcı olacağını düşünüyorum.

Her reflog girdisinin ne zaman eklendiğini göstermesini sağlamak için kullanılabilecek herhangi bir komut satırı seçeneği veya başka ince ayarlar var mı? Manpage gelecek değil ...

Yanıtlar:


453

Kılavuz sayfası yazarken git log, diyelim git reflog --pretty=shortveya istediğiniz herhangi bir seçeneği kullanabilirsiniz

Deneyin

git reflog --date=iso

11
Bu, kafa numarasını (veya doğru terim ne olursa olsun) tarihle değiştirir. İkisine de sahip olabilir misiniz?
Marco Eckstein

7
Öyle görünüyor @Marco özel bir biçim kullanmak zorunda kalacak: git reflog --format='%C(auto)%h %<|(17)%gd %C(blue)%ci%C(reset) %s'. Bunun için bir takma ad ekledim: github.com/blueyed/dotfiles/commit/…
blueyed

1
@blueyed Tam olarak aynı değil - --date=isoreflog komutundaki in, bu reflog girişinin ne zaman oluşturulduğunu gösterir, kesinleştirme zamanını değil. Takma adınızı takdir ediyorum, çünkü daha güzel bir yeniden blog yapmak için kullandım.
Johan Henkens

36

Aşağıdakilerin --walk-reflogsvaryantını kullanabilirsiniz git log:

git log -g

Bu, varsayılan olarak oldukça ayrıntılıdır ve tarihi diğer şeylerin yanı sıra yazdırır. Standart --pretty=bayrakla biçimlendirebilirsiniz .

Çıktıyı --pretty=biçimlendirmek için reflog komutunu doğrudan bayrakla da kullanabilirsiniz .

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

Yukarıdaki formatta %cd, normal reflog çıktısının solundaki bitiş tarihini gösterir.


9
%cd, maalesef, reflog'un işaret ettiği kesinleştirme tarihini gösterir, maalesef, ben (veya OP) peşinde değilim: reflog girişinin tarihini istiyoruz.
Thanatos

10
git log --walk-reflogs --date=isosadece günümü yaptım
Alois Mahdal

7

Özel bir biçim kullanmanız gerekir:

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

Yukarıdaki formatta, %htaahhüt karması, %crgöreceli %gsdeğişme tarihi, reflog konusudur ve %staahhüt konusudur. Bak git-log docs diğer olası tutucuları için. Örneğin, %ciyerine kullanmak %crmutlak kesinleştirme tarihleri ​​gösterir.

Bunu özel bir prettybiçim kullanarak ~ / .gitconfig dosyanıza kaydedebilir ve diğer ad yoluyla başvurabilirsiniz:

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

1
Buradaki sorun %gd, aynı tarihi göstermemesi @{now}. Reflogda arama yaparken tam zamanı bilmek gerçekten önemli olabilir (örneğin, "8: 57'de doğru durumda olduğunu biliyorum").
ErikE

2
@ErikE - Sadece değiştirmek criçin ciher eylemin tam damgası almak için:git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
n1k31t4

6

Söyle gitya sayılmış, ne biçimi refloggirişleri veya zamanlanmış reflogkayıtlar, yani

$ git reflog @{now}

$ git reflog @{0}

İçimdeki programcı içindeki "doğal dil" tarihlerini sevmiyor {}, ama mutlulukla bu teknikle de çalışıyor --date=iso.
mwfearnley

5

Not git 2.10 (2016 3. Çeyrek) ile tarihle ilgili belgeleri geliştirmektedir git reflog.

Bkz 642833d işlemek , 1a2a1e8 taahhüt (2016 Temmuz 27) ve d38c7b2 işlemek , 522259d taahhüt , 83c9f95 işlemek , 2b68222 taahhüt tarafından (22 Tem 2016) Jeff King ( peff) .
Yardım eden: Jeff King ( peff) .
(Tarafından Birleştirilmiş - Junio C Hamano gitster- içinde 0d32799 taahhüt 2016, 08 Aug)

rev-listSeçenekleri güncellenir :

Çıkış reflog dezignatör olarak gösterilebilir ref@{Nth}(burada Nthveya ters kronolojik reflog olarak endeksidir) ref@{timestamp}(bu giriş için zaman damgası ile), bir kaç kurallara bağlı olarak değişir.

Şunları içerir : - aşağıdakilerle ilgili bir güncelleme --date=raw:

tarihi çağdan bu yana saniye olarak gösterir (1970-01-01 00:00:00 UTC), ardından bir boşluk ve ardından saat dilimini UTC'den (a +veya -dört basamaklı) ofset olarak gösterir ; ilk ikisi saattir ve ikinci ikisi dakika).
Yani, zaman damgası ile biçimlendirilmiş gibi strftime("%s %z")).
O Not -localseçenek etkilemez seconds-since-epoch (her zaman UTC ölçülür) değeri, ancak beraberindeki saat dilimi değeri geçiş yok.

Ve yeni bir seçenek: --date=unix

tarihi bir Unix dönemi zaman damgası olarak gösterir (1970'den bu yana saniye).
Olduğu gibi --raw, bu her zaman UTC'dir ve bu nedenle bir -localetkisi yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.