Cara mengkonfigurasi 'git log' untuk menampilkan 'tanggal komit'

127

Bagaimana cara mengkonfigurasi git loguntuk menunjukkan commit datebukan author date?

michael
sumber
25
@Colleen Setiap komit memiliki dua tanggal terkait - AuthorDate dan CommitDate ( git show --pretty=fuller HEADuntuk melihat contoh). Untuk pengembangan lokal, ini biasanya sama, tetapi untuk patch yang ditambahkan melalui email atau mekanisme lain, mereka dapat berbeda, di mana AuthorDate adalah tanggal patch dibuat, dan CommitDate menjadi saat sebenarnya diterapkan ke repositori.
twalberg

Jawaban:

145

Ada beberapa opsi untuk mencetak tanggal dengan cantik . Mungkin yang paling mudah adalah dengan hanya menggunakan salah satu --prettyformat yang sudah dipanggang , seperti git log --pretty=fuller- ini akan menampilkan kedua tanggal. Jika Anda ingin melihat hanya satu tanggal, tetapi menjadikannya tanggal commit, Anda dapat menggunakan git log --format=<some stuff>. Semua kode yang diizinkan untuk menentukan format didokumentasikan di git help log. Komit saat ini adalah salah satu dari %cd, %cD, %cr, %ctatau %ci, tergantung pada format apa yang Anda inginkan dalam.

Jika itu adalah sesuatu yang ingin sering Anda lakukan, letakkan di alias atau tulis skrip tambahan untuk menghemat pengetikan.

twalberg.dll
sumber
53

Anda dapat menggunakan --pretty=formatdan menggunakan %cruntuk relatif tanggal commit.

Sebagai contoh:

$ git log --graph --pretty=format:'%C(auto)%h%d (%cr) %cn <%ce> %s'

Anda dapat menentukan alias di git agar lebih mudah digunakan. Saya memiliki yang berikut di saya .gitconfig:

[alias]
# see `git help log` for detailed help.
#   %h: abbreviated commit hash
#   %d: ref names, like the --decorate option of git-log(1)
#   %cn: commiter name
#   %ce: committer email
#   %cr: committer date, relative
#   %ci: committer date, ISO 8601-like format
#   %an: author name
#   %ae: author email
#   %ar: author date, relative
#   %ai: author date, ISO 8601-like format
#   %s: subject
# my awesome git log replacement
lol  = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s\"
# same as above, but ISO date
lold = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%ci)%Creset %C(green)%cn <%ce>%Creset %s\"
# using build-in standards
lol2 = log --oneline --graph --decorate
# shows branches and their last commits
lol3 = log --all --graph --decorate --oneline --simplify-by-decoration

Di Linux atau sistem serupa, Anda dapat menggunakan tanda kutip tunggal 'sebagai pengganti tanda kutip ganda ":

[alias]
lol = log --graph --pretty=format:'%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s'

Dengan ini, jalankan saja git lol, atau varian lain untuk melihat keluaran yang cantik.

Berikut output dari git lol --simplify-by-decoration:

keluaran git lol

  • Itu terlihat bagus. :)
  • lollebih mudah untuk mengetik daripada log, dan terdengar lebih baik juga.
    • Juga memberi Anda akses ke reguler git logjika Anda membutuhkannya.
  • Mata Anda dapat memindai isi dengan cepat dengan warna yang berbeda.
  • Nama dan email sangat berguna untuk proyek / organisasi besar dengan banyak kontributor.
  • Menggunakan pewarnaan default untuk hash / ref karena sudah cukup bagus.

Berikut keluaran git loldwith tanggal dalam format ISO. Berguna untuk melihat tanggal / waktu yang tepat saat komit dibuat, dengan bonus dapat melihat zona waktu kontributor dengan mudah.

masukkan deskripsi gambar di sini

Edit 2020-06 : Menambahkan tangkapan layar. Diperbarui untuk menggunakan %C(auto)(pewarnaan otomatis / default) untuk %h(komit hash) dan %d(nama ref). Ditambahkan %cn(nama komiter) selain email.

raychi
sumber
1
Saya mendapatkan kesalahan penguraian: git log --graph --pretty=format:\"%C(yellow)%h%Creset%C(cyan)%C(bold)%d%Creset %C(cyan)(%cr)%Creset %C(green)%ce%Creset %s\" bash: kesalahan sintaks dekat token tak terduga `('
frakman1
2
@ frakman1 - Anda harus melepaskan diri dari "s untuk baris di atas untuk berjalan di terminal
stites
2
Garis yang dikoreksi: git log --graph --pretty = format: "% C (kuning)% h% Creset% C (cyan)% C (bold)% d% Creset% C (cyan) (% cr)% Creset% C (hijau)% ce% Creset% s "
RedSands
1

Saya lebih suka format ini, tidak menyertakan nama penulis dan menyertakan tanggal aktual untuk komit.

git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset  %C(green)%Creset %s" --date=short
Patrick Steil
sumber