Saya mencoba untuk menampilkan komit terakhir dalam Git, tetapi saya perlu tanggal dalam format khusus.
Saya tahu bahwa format log cantik %ad
menghormati --date
format, tetapi satu-satunya --date
format yang dapat saya temukan adalah "pendek". Saya ingin tahu yang lain, dan apakah saya bisa membuat yang khusus seperti:
git -n 1 --date=**YYMMDDHHmm** --pretty=format:"Last committed item in this release was by %%an, %%aD, message: %%s(%%h)[%%d]"
git
command-line
ar3
sumber
sumber
--date=iso-strict
: lihat jawaban saya di bawah ini--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, Anda juga akan memiliki:--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)
Jawaban:
Yang lain adalah (dari
git help log
):Tidak ada cara bawaan yang saya tahu untuk membuat format kustom, tetapi Anda dapat melakukan beberapa shell magic.
Langkah pertama di sini memberi Anda cap waktu milidetik. Anda dapat mengubah baris kedua untuk memformat stempel waktu yang Anda inginkan. Contoh ini memberi Anda sesuatu yang mirip
--date=local
, dengan hari yang empuk.Dan jika Anda ingin efek permanen tanpa mengetik ini setiap waktu, cobalah
Atau, untuk efek pada semua penggunaan git Anda dengan akun ini
sumber
git config log.date iso
atau, untuk efek pada semua penggunaan git Anda dengan akun inigit config --global log.date iso
--format:<args>
akan melewati<args>
strftime.Selain itu
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, seperti yang disebutkan orang lain, Anda juga dapat menggunakan format tanggal log kustomIni menghasilkan sesuatu seperti
2016-01-13 11:32:13
.CATATAN: Jika Anda melihat komit yang ditautkan ke bawah, saya yakin Anda setidaknya membutuhkan Git v2.6.0-rc0ini untuk bekerja.
Dalam perintah penuh itu akan menjadi seperti:
Saya belum dapat menemukan ini di dokumentasi di mana pun (jika seseorang tahu di mana menemukannya, silakan komentar) jadi saya awalnya menemukan placeholder melalui coba-coba.
Dalam pencarian saya untuk dokumentasi tentang ini saya menemukan komit untuk Git itu sendiri yang menunjukkan format diumpankan langsung ke
strftime
. Mencaristrftime
(di sini atau di sini ) placeholder yang saya temukan cocok dengan placeholder yang tercantum.Placeholder meliputi:
Dalam perintah penuh itu akan menjadi sesuatu seperti
sumber
git config --global alias.lg "log --graph --decorate -30 --all --date-order --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%C(cyan)%h%Creset %C(black bold)%ad%Creset%C(auto)%d %s'"
git lg
dan saya masih mendapatkan kesalahan berikut.fatal: unknown date format format:%Y-%m-%d %H:%M:%S
. Saya menjalankan git di windows. Ini versi git saya.git version 1.9.5.msysgit.1
. Jadi, apakah saya harus meningkatkan ke versi yang lebih baru?%X
, ~~ Saya hanya mencobanya di komputer saya dan pasti mendapatkan waktu di zona waktu saya. ~~ Hmm, sekarang saya tidak yakin. Saya mengkloning repo dari seseorang yang tidak berada di zona waktu saya dan mencoba lagi. Saya pikir saya hanya mendapatkan waktu yang diformat menggunakan pengaturan lokal saat ini tetapi dengan zona waktu terpotong.Setelah sekian lama mencari cara untuk mendapatkan
git log
keluaran tanggal dalam formatYYYY-MM-DD
dengan cara yang akan bekerjaless
, saya datang dengan format berikut:bersama dengan saklar
--date=iso
.Ini akan mencetak tanggal dalam format ISO (yang panjang), dan kemudian mencetak 14 kali karakter backspace (0x08), yang, di terminal saya, secara efektif menghilangkan semuanya setelah bagian YYYY-MM-DD. Sebagai contoh:
Ini memberikan sesuatu seperti:
Apa yang saya lakukan adalah membuat alias
l
dengan beberapa tweak pada format di atas. Ini menunjukkan grafik komit ke kiri, kemudian hash komit, diikuti oleh tanggal, nama pendek, nama ulang dan subjek. Aliasnya adalah sebagai berikut (dalam ~ / .gitconfig):sumber
--date=short shows only date but not time, in YYYY-MM-DD format.
| sort | uniq
tidak berfungsi.%C(bold cyan)%ai%x08%x08%x08%x08%x08%x08%x08%x08%x08%C(reset) %C(bold green)(%ar%x08%x08%x08%x08)%C(reset)
untuk mendapatkan format2015-01-19 11:27 (11 days)
. +1Anda dapat menggunakan opsi pemotongan bidang untuk menghindari
%x08
karakter yang sangat banyak . Sebagai contoh:setara dengan:
Dan sedikit lebih mudah di mata.
Lebih baik lagi, untuk contoh khusus ini, menggunakan
%cd
akan menghormati--date=<format>
, jadi jika Anda mauYYYY-MM-DD
, Anda dapat melakukan ini dan menghindari%<
dan%x08
sepenuhnya:Saya hanya memperhatikan ini agak melingkar sehubungan dengan posting asli tetapi saya akan meninggalkannya kalau-kalau orang lain tiba di sini dengan parameter pencarian yang sama saya lakukan.
sumber
Saya membutuhkan hal yang sama dan menemukan hal berikut ini berfungsi untuk saya:
The
--date=format
format output tanggal di mana--pretty
memberitahu apa yang harus dicetak.sumber
git log --pretty=format:"%h%x09%cd%x09%s" --date=format:'%Y-%m-%d %H:%M:%S %p'
Menyadari "
date=iso
" format: tidak persis ISO 8601 .Lihat komit " 466fb67 " dari Beat Bolli (
bbolli
) , untuk Git 2.2.0 (November 2014)cantik: menyediakan format tanggal ISO 8601 yang ketat
Lihat utas ini untuk diskusi.
sumber
Perhatikan bahwa ini akan dikonversi ke zona waktu lokal Anda, jika hal itu penting untuk kasus penggunaan Anda.
sumber
Git 2.7 (Q4 2015) akan diperkenalkan
-local
sebagai instruksi.Artinya, selain:
Anda juga akan memiliki:
The
-local
akhiran tidak dapat digunakan denganraw
ataurelative
. Referensi .Anda sekarang dapat meminta format tanggal apa pun menggunakan zona waktu lokal . Lihat
johnkeeping
) .Lihat komit add00ba , komit 547ed71 (03 Sep 2015) oleh Jeff King (
peff
) .(Digabung oleh Junio C Hamano -
gitster
- dalam komit 7b09c45 , 05 Okt 2015)Secara khusus, yang terakhir dari atas (melakukan add00ba) menyebutkan:
sumber
format-local
juga berhasil! Jadi sangat sempurna yang menggabungkan kekuatan antara format favorit dan lokal.Opsi format
%ai
adalah apa yang saya inginkan:sumber
Dengan Git 2.21 (Q1 2019), format tanggal baru "
--date=human
" yang berubah tergantung pada seberapa jauh waktu dari waktu saat ini telah diperkenalkan ."
--date=auto
" dapat digunakan untuk menggunakan format baru ini ketika output menuju ke pager atau ke terminal dan sebaliknya format default.Lihat komit 110a6a1 , komit b841d4f (29 Jan 2019), dan komit 038a878 , komit 2fd7c22 (21 Jan 2019) oleh Stephen P. Smith (``) .
Lihat commit acdd377 (18 Jan 2019) oleh Linus Torvalds (
torvalds
) .(Digabung oleh Junio C Hamano -
gitster
- di commit ecbe1be , 07 Feb 2019)Git 2.24 (Q4 2019) menyederhanakan kode.
Lihat komit 47b27c9 , komit 29f4332 (12 Sep 2019) oleh Stephen P. Smith (``) .
(Digabung oleh Junio C Hamano -
gitster
- di commit 36d2fca , 07 Okt 2019)sumber
sumber
Gunakan Bash dan perintah tanggal untuk mengonversi dari format mirip ISO ke format yang Anda inginkan. Saya ingin format tanggal mode-org (dan daftar item), jadi saya melakukan ini:
Dan hasilnya misalnya:
sumber