วิธีการเปลี่ยนรูปแบบวันที่บันทึก Git


150

ฉันกำลังพยายามแสดงการส่งมอบครั้งล่าสุดภายใน Git แต่ฉันต้องการวันที่ในรูปแบบพิเศษ

ฉันรู้ว่ารูปแบบไฟล์บันทึกค่อนข้าง%adเคารพ--dateรูปแบบ แต่--dateรูปแบบเดียวที่ฉันสามารถหาได้คือ "สั้น" ฉันต้องการรู้จักคนอื่น ๆ และฉันสามารถสร้างที่กำหนดเองเช่น:

git -n 1 --date=**YYMMDDHHmm** --pretty=format:"Last committed item in this release was by %%an, %%aD, message: %%s(%%h)[%%d]"

1
ฉันมักจะพบเอกสารอย่างเป็นทางการของ Linux Kernel Gitเพื่อเป็นแหล่งข้อมูลที่ยอดเยี่ยมสำหรับคำถามประเภทนี้

2
หมายเหตุ: ตอนนี้คุณ (พ.ย. 2014, Git 2.2) มี--date=iso-strict: ดูคำตอบของฉันด้านล่าง
VonC

4
ด้วย git 2.7 (Q4 2015) คุณสามารถขอให้ใช้เขตเวลาท้องถิ่นสำหรับรูปแบบวันที่ใด ๆ ! ดูคำตอบของฉันด้านล่าง นอกจากนี้--date=(relative|local|default|iso|iso-strict|rfc|short|raw)คุณยังจะได้รับ:--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)
VonC

คำตอบ:


167

อื่น ๆ คือ (จากgit help log):

--date=(relative|local|default|iso|rfc|short|raw)
  Only takes effect for dates shown in human-readable format,
  such as when using "--pretty".  log.date config variable
  sets a default value for log command’s --date option.

--date=relative shows dates relative to the current time, e.g. "2 hours ago".

--date=local shows timestamps in user’s local timezone.

--date=iso (or --date=iso8601) shows timestamps in ISO 8601 format.

--date=rfc (or --date=rfc2822) shows timestamps in RFC 2822 format,
  often found in E-mail messages.

--date=short shows only date but not time, in YYYY-MM-DD format.

--date=raw shows the date in the internal raw git format %s %z format.

--date=default shows timestamps in the original timezone
  (either committer’s or author’s).

ไม่มีวิธีในตัวที่ฉันรู้ในการสร้างรูปแบบที่กำหนดเอง แต่คุณสามารถทำเวทย์มนตร์เชลล์ได้

timestamp=`git log -n1 --format="%at"`
my_date=`perl -e "print scalar localtime ($timestamp)"`
git log -n1 --pretty=format:"Blah-blah $my_date"

ขั้นตอนแรกที่นี่ทำให้คุณได้รับการประทับเวลาเป็นมิลลิวินาที คุณสามารถเปลี่ยนบรรทัดที่สองเพื่อจัดรูปแบบเวลาที่คุณต้องการ ตัวอย่างนี้ให้สิ่งที่คล้ายกับ--date=localคุณด้วยวันที่มีเบาะ


และหากคุณต้องการเอฟเฟกต์ถาวรโดยไม่ต้องพิมพ์สิ่งนี้ทุกครั้งให้ลอง

git config log.date iso 

หรือมีผลกับการใช้งานคอมไพล์ทั้งหมดของคุณด้วยบัญชีนี้

git config --global log.date iso

15
และหากคุณต้องการเอฟเฟกต์ถาวรโดยไม่ต้องพิมพ์สิ่งนี้ทุกครั้งให้ลองทำสิ่งที่ชอบgit config log.date isoหรือเพื่อเอฟเฟกต์การใช้งานคอมไพล์ทั้งหมดของคุณด้วยบัญชีนี้git config --global log.date iso
Stéphane Gourichon

12
คุณสามารถใช้รูปแบบของคุณเอง ดูคำตอบของเบน Allred --format:<args>จะผ่าน<args>ไปในช่วงเวลาสั้น ๆ
Captain Man

190

นอกจาก--date=(relative|local|default|iso|iso-strict|rfc|short|raw)ดังที่คนอื่นพูดถึงคุณยังสามารถใช้รูปแบบวันที่บันทึกที่กำหนดเองได้ด้วย

--date=format:'%Y-%m-%d %H:%M:%S'

ผลลัพธ์เช่น2016-01-13 11:32:13นี้

หมายเหตุ:หากคุณดูที่การกระทำเชื่อมโยงไปยังด้านล่างนี้ฉันเชื่อว่าคุณจะต้องไม่น้อยกว่าGit v2.6.0-rc0สำหรับการทำงาน

ในคำสั่งแบบเต็มมันจะเป็นสิ่งที่ชอบ:

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 ตัวเองstrftimeที่บ่งชี้ว่ารูปแบบจะถูกป้อนโดยตรงกับ การค้นหาstrftime( ที่นี่หรือที่นี่ ) ตัวยึดตำแหน่งที่ฉันพบตรงกับตัวยึดตำแหน่งที่ระบุไว้

ตัวยึดรวมถึง:

%a      Abbreviated weekday name
%A      Full weekday name
%b      Abbreviated month name
%B      Full month name
%c      Date and time representation appropriate for locale
%d      Day of month as decimal number (01 – 31)
%H      Hour in 24-hour format (00 – 23)
%I      Hour in 12-hour format (01 – 12)
%j      Day of year as decimal number (001 – 366)
%m      Month as decimal number (01 – 12)
%M      Minute as decimal number (00 – 59)
%p      Current locale's A.M./P.M. indicator for 12-hour clock
%S      Second as decimal number (00 – 59)
%U      Week of year as decimal number, with Sunday as first day of week (00 – 53)
%w      Weekday as decimal number (0 – 6; Sunday is 0)
%W      Week of year as decimal number, with Monday as first day of week (00 – 53)
%x      Date representation for current locale
%X      Time representation for current locale
%y      Year without century, as decimal number (00 – 99)
%Y      Year with century, as decimal number
%z, %Z  Either the time-zone name or time zone abbreviation, depending on registry settings
%%      Percent sign

ในคำสั่งแบบเต็มมันจะเป็นสิ่งที่ต้องการ

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'" 

4
@ พระอิศวร: ฉันวิ่งเข้าไปในกรณีที่ตัวเองเมื่อเร็ว ๆ นี้ที่มันไม่ทำงานและมันอาจจะเป็นสิ่งเดียวกันกับที่คุณกำลังทำงานอยู่ ฉันใช้เครื่องจับคู่กับ Git รุ่นเก่ากว่า เมื่อฉันอัพเดท Git รูปแบบวันที่ที่กำหนดเองเริ่มทำงาน หากคุณดูการกระทำที่เชื่อมโยงกับข้างต้นฉันเชื่อว่าคุณต้องมีอย่างน้อย v2.6.0-rc0 ตัวอย่างที่ให้มาคือสิ่งที่ฉันใช้ ในคำสั่งเต็มรูปแบบมันจะเป็นสิ่งที่ต้องการ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'"
Ben Allred

1
ขอบคุณเบ็น! ฉันวางคำสั่งของคุณตามที่เป็นอยู่และรันgit lgและฉันยังคงได้รับข้อผิดพลาดต่อไปนี้ fatal: unknown date format format:%Y-%m-%d %H:%M:%S. ฉันกำลังใช้คอมไพล์บน windows นี่คือเวอร์ชั่นคอมไพล์ของฉัน git version 1.9.5.msysgit.1. ดังนั้นฉันต้องอัพเกรดเป็นเวอร์ชั่นใหม่กว่านี้หรือไม่
พระอิศวร

สวัสดีเบ็นฉันเป็นรุ่นที่เก่ากว่า ฉันอัปเกรดเป็นรุ่นล่าสุดและใช้งานได้ ดังนั้นฉันจึงแก้ไขคำตอบของคุณเพื่อให้ชัดเจนยิ่งขึ้น (ย้ายความคิดเห็นของคุณไปด้านบน) และ +1 คุณด้วย! ขอบคุณ !!
Shiva

ใช้งานได้ดี! ใช้สคริปต์ทุบตีง่าย ๆ ในการส่งออก csv ตอนนี้ฉันสามารถมีคอลัมน์สำหรับปีเดือนสัปดาห์และอื่น ๆ รักมัน
Jamie Taylor

1
@EdRandall: ถ้าคุณหมายถึง%X~~ ฉันแค่ลองมันบนเครื่องของฉันและรับเวลาในเขตเวลาของฉันแน่นอน ~~ อืมตอนนี้ฉันไม่แน่ใจ ฉันลอกแบบ repo จากคนที่ไม่ได้อยู่ในเขตเวลาของฉันและลองอีกครั้ง ฉันคิดว่าฉันเพิ่งได้รับการจัดรูปแบบเวลาโดยใช้การตั้งค่าสถานที่ปัจจุบัน แต่มีการยกเลิกเขตเวลา
Ben Allred

36

หลังจากหาเวลานานเพื่อหาgit logเอาท์พุทวันที่ในรูปแบบYYYY-MM-DDที่จะใช้งานได้lessฉันได้รับรูปแบบต่อไปนี้:

%ad%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08

--date=isoพร้อมกับสวิทช์

สิ่งนี้จะพิมพ์วันที่ในรูปแบบ ISO (ยาว) จากนั้นพิมพ์ 14 เท่าของอักขระ backspace (0x08) ซึ่งในเทอร์มินัลของฉันจะลบทุกอย่างหลังจากส่วน YYYY-MM-DD อย่างมีประสิทธิภาพ ตัวอย่างเช่น:

git log --date=iso --pretty=format:'%ad%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%aN %s'

สิ่งนี้ทำให้:

2013-05-24 bruno This is the message of the latest commit.
2013-05-22 bruno This is an older commit.
...

สิ่งที่ฉันทำคือสร้างนามแฝงที่lมีการปรับแต่งในรูปแบบด้านบน มันแสดงกราฟการกระทำทางด้านซ้ายจากนั้นแฮชการคอมมิชชันตามด้วยวันที่ชื่อย่อชื่อซ้ำและหัวเรื่อง นามแฝงมีดังนี้ (ใน ~ / .gitconfig):

[alias]
        l = log --date-order --date=iso --graph --full-history --all --pretty=format:'%x08%x09%C(red)%h %C(cyan)%ad%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08 %C(bold blue)%aN%C(reset)%C(bold yellow)%d %C(reset)%s'

2
มันใช้งานได้ดีมากสำหรับฉัน การใช้ 6 จาก% x08 จะลบเขตเวลาที่ต่อท้ายสำหรับฉันอย่างแน่นอน
Penghe Geng

7
แล้ว--date=short shows only date but not time, in YYYY-MM-DD format.
Paaske

3
ใน zsh และ bash สิ่งนี้จะแสดงเอาต์พุตของคุณบนเทอร์มินัล แต่ถ้าคุณไพพ์มันลงในอะไรก็ตามข้อมูล "backspaced" ยังคงอยู่ที่นั่น นี่หมายความว่าสิ่งต่าง ๆ เช่น| sort | uniqไม่ทำงาน
chmac

5
มันไร้สาระและยอดเยี่ยมในเวลาเดียวกัน ฉันใช้เพื่อให้ได้รูปแบบ%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) 2015-01-19 11:27 (11 days)+1
naught101

2
stackoverflow.com/a/34778736/907576คำตอบนี้เหมาะสมกว่า (ตั้งแต่ Git v2.6.0-rc0)
radistao

25

คุณสามารถใช้ตัวเลือกการตัดฟิลด์เพื่อหลีกเลี่ยง%x08อักขระจำนวนมาก ตัวอย่างเช่น:

git log --pretty='format:%h %s%n\t%<(12,trunc)%ci%x08%x08, %an <%ae>'

เทียบเท่ากับ:

git log --pretty='format:%h %s%n\t%ci%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08%x08, %an <%ae>'

และค่อนข้างง่ายขึ้นในสายตา

ยังดีกว่าสำหรับตัวอย่างนี้การใช้%cdจะให้เกียรติ--date=<format>ดังนั้นหากคุณต้องการYYYY-MM-DDคุณสามารถทำได้และหลีกเลี่ยง%<และ%x08ทั้งหมด:

git log --date=short --pretty='format:%h %s%n\t%cd, %an <%ae>'

ฉันเพิ่งสังเกตเห็นว่ามันค่อนข้างกลมเมื่อเทียบกับโพสต์ต้นฉบับ แต่ฉันจะทิ้งไว้ในกรณีที่คนอื่นมาที่นี่พร้อมกับพารามิเตอร์การค้นหาเดียวกับที่ฉันทำ


23

ฉันต้องการสิ่งเดียวกันและพบว่าการทำงานต่อไปนี้สำหรับฉัน:

git log -n1 --pretty='format:%cd' --date=format:'%Y-%m-%d %H:%M:%S'

--date=formatรูปแบบการออกวันที่--prettyบอกว่าจะพิมพ์


2
มันไม่ได้ผลสำหรับฉัน ฉันได้รับ "รูปแบบวันที่ที่ไม่รู้จัก"
Ray

คุณมีคอมไพล์รุ่นใด
lac_dev


git log --pretty=format:"%h%x09%cd%x09%s" --date=format:'%Y-%m-%d %H:%M:%S %p'
บาริสต้าสมัครเล่น

@amateurbarista ที่ไม่แสดงคอมมิทล่าสุดให้อ่านคำขอ ar3 พยายามแสดงการส่งมอบครั้งล่าสุดไม่ใช่การส่งมอบไม่กี่ครั้งล่าสุด
lac_dev

16

จะตระหนักถึง " date=isoรูปแบบ": มันไม่ตรงกับ มาตรฐาน ISO 8601
ดูคอมมิท " 466fb67 " จากBeat Bolli ( bbolli)สำหรับ Git 2.2.0 (พฤศจิกายน 2014)

สวย: ระบุรูปแบบวันที่ ISO 8601 ที่เข้มงวด

รูปแบบวันที่ "ISO" ของ Git ไม่สอดคล้องกับมาตรฐาน ISO 8601 เนื่องจากความแตกต่างเล็ก ๆ น้อย ๆ และไม่สามารถแยกวิเคราะห์โดยตัวแยกวิเคราะห์ ISO 8601 เท่านั้นเช่นของ XML toolchains

เอาต์พุตจาก " --date=iso" เบี่ยงเบนจาก ISO 8601 ด้วยวิธีเหล่านี้:

  • ช่องว่างแทนTตัวคั่นวันที่ / เวลา
  • ช่องว่างระหว่างเวลาและเขตเวลา
  • ไม่มีเครื่องหมายโคลอนระหว่างชั่วโมงและนาทีของเขตเวลา

เพิ่มรูปแบบวันที่ ISO 8601 ที่เข้มงวดสำหรับการแสดงวันเดินทางและผู้เขียน
ใช้ตัวระบุรูปแบบ ' %aI' และ ' %cI' และเพิ่มชื่อรูปแบบวันที่ ' --date=iso-strict' หรือ ' --date=iso8601-strict'

ดูหัวข้อนี้สำหรับการสนทนา


11
date -d @$(git log -n1 --format="%at") +%Y%m%d%H%M

โปรดทราบว่าสิ่งนี้จะแปลงเป็นเขตเวลาท้องถิ่นของคุณในกรณีที่สำคัญสำหรับกรณีการใช้งานของคุณ


ขอบคุณ ฉันปรับแต่งมันด้วย% ct
cagney

5

Git 2.7 (Q4 2015) จะแนะนำ-localเป็นคำแนะนำ
มันหมายความว่านอกเหนือไปจาก:

--date=(relative|local|default|iso|iso-strict|rfc|short|raw)

คุณจะมี:

--date=(default-local|iso-local|iso-strict-local|rfc-local|short-local)

-localต่อท้ายไม่สามารถใช้งานร่วมกับหรือraw การอ้างอิงrelative

ตอนนี้คุณสามารถขอรูปแบบวันที่ใด ๆโดยใช้เขตเวลาท้องถิ่น ดู

ดูกระทำ add00ba , กระทำ 547ed71 (3 กันยายน 2015) โดยเจฟฟ์คิง (peff )
(ผสานโดยJunio ​​C Hamano - gitster-ในการกระทำ 7b09c45 , 05 Oct 2015)

โดยเฉพาะอย่างยิ่งจากข้างต้น (กระทำ add00ba) กล่าวถึง:

date: ทำlocalรูปแบบ orthogonal เป็นรูปแบบวันที่:

--dateโหมดส่วนใหญ่ของเราเกี่ยวกับรูปแบบของวันที่: รายการที่เราแสดงและเรียงตามลำดับ
แต่ " --date=local" เป็นบิตของคี่ มันหมายถึง "แสดงวันที่ในรูปแบบปกติ แต่ใช้เขตเวลาท้องถิ่น"
เขตเวลาที่เราใช้นั้นเป็นมุมฉากกับรูปแบบที่แท้จริงและไม่มีเหตุผลที่เราไม่สามารถมี "localized iso8601" ฯลฯ

ชุดข้อมูลแก้ไขนี้เพิ่มlocalเขตข้อมูลบูลีนเป็น " struct date_mode" และปล่อยDATE_LOCALองค์ประกอบจากเอนัมdate_mode_type(ตอนนี้เป็นเพียงเครื่องหมายDATE_NORMALบวกlocal=1)
ผู้ใช้สามารถเข้าถึงคุณลักษณะใหม่ได้โดยเพิ่ม " -local" ในโหมดวันที่ใด ๆ (เช่น " iso-local") และเรายังคงlocalเป็น "นามแฝงสำหรับ" default-local"เพื่อความเข้ากันได้ย้อนหลัง


2
ฉันจะต้องทราบว่าการformat-localทำงานเกินไป! ดังนั้นจึงสมบูรณ์แบบมากที่ผสานพลังระหว่างรูปแบบที่ชื่นชอบและท้องถิ่น
acgtyrant

5

ตัวเลือกรูปแบบ%aiคือสิ่งที่ฉันต้องการ:

%ai: วันที่ผู้เขียน, รูปแบบ ISO 8601

--format="%ai"

5

ฉันต้องการวันที่ในรูปแบบพิเศษ

ด้วย Git 2.21 (ไตรมาสที่ 1 ปี 2019) รูปแบบวันที่ใหม่ " --date=human" ที่ปรับเปลี่ยนผลลัพธ์ขึ้นอยู่กับว่าเวลามาจากเวลาปัจจุบันมากเพียงใด

" --date=auto" สามารถใช้เพื่อใช้รูปแบบใหม่นี้เมื่อเอาต์พุตกำลังไปยังเพจเจอร์หรือไปยังเทอร์มินัลและมิฉะนั้นเป็นรูปแบบเริ่มต้น

ดูกระทำ 110a6a1 , กระทำ b841d4f (29 มกราคม 2019) และกระทำ 038a878 , กระทำ 2fd7c22 (21 มกราคม 2019) โดยสตีเฟ่นพีสมิ ธ ( ``)
ดูกระทำ acdd377 (18 มกราคม 2019) โดยLinus Torvalds (torvalds )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ ecbe1be , 7 กุมภาพันธ์ 2019)

เพิ่มเอกสารรูปแบบวันที่ 'มนุษย์'

แสดงข้อมูลวันที่และเวลาในรูปแบบคล้ายกับที่ผู้คนเขียนวันที่ในบริบทอื่น ถ้าปีที่ไม่ได้ระบุแล้วอนุมานผู้อ่านวันที่จะได้รับคือในปีปัจจุบัน

โดยไม่ได้แสดงข้อมูลซ้ำซ้อนผู้อ่านมุ่งเน้นที่ข้อมูลที่แตกต่างกัน
โปรแกรมแก้ไขจะรายงานวันที่สัมพันธ์กันตามข้อมูลที่อนุมานจากวันที่บนเครื่องที่รันgitคำสั่งในเวลาที่คำสั่งถูกดำเนินการ

แม้ว่ารูปแบบจะมีประโยชน์มากกว่าสำหรับมนุษย์โดยการวางข้อมูลที่อนุมาน แต่ก็ไม่มีอะไรที่ทำให้เป็นจริงได้
หากrelativeรูปแบบวันที่ '' ไม่ได้ใช้งานแล้วการใช้ ' relative' จะเหมาะสม

เพิ่มhumanการทดสอบรูปแบบวันที่

เมื่อใช้humanหลายเขตข้อมูลจะถูกระงับทั้งนี้ขึ้นอยู่กับความแตกต่างของเวลาระหว่างวันที่อ้างอิงและวันที่ในเครื่องคอมพิวเตอร์

  • ในกรณีที่ความแตกต่างน้อยกว่าหนึ่งปีฟิลด์จะถูกระงับ
  • หากเวลาน้อยกว่าหนึ่งวัน เดือนและปีถูกระงับ
check_date_format_human 18000       "5 hours ago"       #  5 hours ago
check_date_format_human 432000      "Tue Aug 25 19:20"  #  5 days ago
check_date_format_human 1728000     "Mon Aug 10 19:20"  #  3 weeks ago
check_date_format_human 13000000    "Thu Apr 2 08:13"   #  5 months ago
check_date_format_human 31449600    "Aug 31 2008"       # 12 months ago
check_date_format_human 37500000    "Jun 22 2008"       #  1 year, 2 months ago
check_date_format_human 55188000    "Dec 1 2007"        #  1 year, 9 months ago
check_date_format_human 630000000   "Sep 13 1989"       # 20 years ago

## แทนที่autoโหมด ' ' ที่เสนอด้วย ' auto:'

นอกเหนือจากการเพิ่มhumanรูปแบบ '' แล้วโปรแกรมแก้ไขจะเพิ่มautoคำหลักซึ่งสามารถใช้ในไฟล์กำหนดค่าเป็นวิธีอื่นในการระบุรูปแบบบุคคล การลบ 'อัตโนมัติ' จะล้างข้อมูลในhumanอินเทอร์เฟซรูปแบบ ''

เพิ่มความสามารถในการระบุโหมด ' foo' หากมีการใช้เพจเจอร์โดยใช้auto:fooไวยากรณ์
ดังนั้นauto:humanโหมดวันที่ '' จะเป็นค่าเริ่มต้นhumanหากเราใช้เพจเจอร์
ดังนั้นคุณสามารถทำได้:

git config --add log.date auto:human

และgit logคำสั่ง " " ของคุณจะแสดงรูปแบบที่มนุษย์สามารถอ่านได้เว้นแต่ว่าคุณกำลังใช้สคริปต์


Git 2.24 (Q4 2019) ทำให้รหัสง่ายขึ้น

ดูกระทำ 47b27c9 , กระทำ 29f4332 (12 กันยายน 2019) โดยสตีเฟ่นพีสมิ ธ ( ``)
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 36d2fca , 7 ตุลาคม 2019)

ออกจากการผ่าน 'ตอนนี้' ไปยังรหัสวันที่

Commit b841d4f (เพิ่มhumanรูปแบบเพื่อทดสอบเครื่องมือ, 2019-01-28, Git v2.21.0-rc0) เพิ่มget_time()ฟังก์ชั่นที่ช่วยให้$GIT_TEST_DATE_NOWในสภาพแวดล้อมเพื่อแทนที่เวลาปัจจุบัน ดังนั้นเราจึงไม่จำเป็นอีกต่อไปที่จะตีความตัวแปรในการที่
cmd__date()

ดังนั้นเราสามารถหยุดส่งnowพารามิเตอร์ "" ลงไปยังฟังก์ชั่นวันที่เนื่องจากไม่มีใครใช้พวกเขา
ทราบว่าเราไม่จำเป็นที่จะต้องให้แน่ใจว่าทั้งหมดของสายที่ก่อนหน้านี้ที่เอา " now" get_time()พารามิเตอร์จะถูกต้องโดยใช้


2
git log -n1 --format="Last committed item in this release was by %an, `git log -n1 --format=%at | awk '{print strftime("%y%m%d%H%M",$1)}'`, message: %s (%h) [%d]"

สนใจที่จะทำอย่างละเอียด? นอกจากนี้คำตอบของคุณมีฟิลด์ผู้เขียนและประวัติ ไม่จำเป็นต้องเซ็นชื่อ
Kissaki

2

ใช้ Bash และคำสั่ง date เพื่อแปลงจากรูปแบบ ISO ให้เป็นรูปแบบที่คุณต้องการ ฉันต้องการรูปแบบวันที่ในโหมดองค์กร (และรายการ) ดังนั้นฉันจึงทำสิ่งนี้:

echo + [$(date -d "$(git log --pretty=format:%ai -1)" +"%Y-%m-%d %a %H:%M")] \
    $(git log --pretty=format:"%h %s" --abbrev=12 -1)

และผลที่ได้คือตัวอย่าง:

+ [2015-09-13 Sun 22:44] 2b0ad02e6cec Merge pull request #72 from 3b/bug-1474631
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.