มีวิธีทำให้ git-reflog แสดงวันที่อยู่ข้างๆแต่ละรายการหรือไม่?


305

คำสั่ง git-reflog ไม่ได้แสดงวันที่อยู่ข้างๆแต่ละรายการเป็นค่าเริ่มต้น ฉันคิดว่ามันจะมีประโยชน์มาก

มีตัวเลือกบรรทัดคำสั่งหรือการปรับแต่งอื่น ๆ ซึ่งสามารถใช้เพื่อให้แสดงเมื่อมีการเพิ่มแต่ละรายการ reflog? manpageไม่ได้เตรียมพร้อม ...

คำตอบ:


453

ในฐานะที่เป็นหน้าคนเขียนคุณสามารถใช้ตัวเลือกสำหรับgit logพูดgit reflog --pretty=shortหรืออื่น ๆ ตามที่คุณต้องการ

ลอง

git reflog --date=iso

11
นี้จะแทนที่หมายเลขหัว (หรือสิ่งที่คำที่ถูกต้องคือ) ด้วยวันที่ คุณมีทั้งคู่ได้ไหม
Marco Eckstein

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 จะแสดงเมื่อสร้างรายการ reflog นั้นไม่ใช่ช่วงเวลาของการส่งคำสั่ง ยังคงชื่นชมนามแฝงของคุณเนื่องจากฉันเคยใช้มันเพื่อสร้าง reflog ที่สวยขึ้น
Johan Henkens

36

คุณสามารถใช้--walk-reflogsตัวแปรของgit log:

git log -g

สิ่งนี้ค่อนข้างละเอียดโดยค่าเริ่มต้นและพิมพ์วันที่ท่ามกลางสิ่งอื่น ๆ คุณสามารถจัดรูปแบบด้วยค่า--pretty=สถานะมาตรฐาน

คุณยังสามารถใช้คำสั่ง reflog โดยตรงกับ--pretty=แฟล็กเพื่อจัดรูปแบบเอาต์พุต

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

ในรูปแบบข้างต้น%cdแสดงวันที่ส่งมอบทางด้านซ้ายของเอาต์พุต reflog ปกติ


9
%cd, แสดงวันที่ที่คอมมิชชันชี้ไปที่ซึ่งไม่ใช่สิ่งที่ฉัน (หรือ OP) เป็นหลังจาก: เราต้องการวันที่ของรายการ reflog
Thanatos

10
git log --walk-reflogs --date=isoเพิ่งทำวันของฉัน
Alois Mahdal

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}กัน เมื่อค้นหา reflog การรู้เวลาที่แน่นอนนั้นสำคัญมาก (ตัวอย่างเช่นฉันรู้ว่ามันอยู่ในสถานะที่ถูกต้องที่ 8:57 ")
ErikE

2
@ErikE - เพียงแค่เปลี่ยนเป็นcrเพื่อciให้ได้บันทึกเวลาเต็มรูปแบบของแต่ละการกระทำ:git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
n1k31t4

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) โดยเจฟฟ์คิง (peff )
ช่วยโดย: เจฟฟ์คิง (peff )
(รวมโดยJunio C Hamano - gitster-ในการกระทำ 0d32799 , 8 สิงหาคม 2016)

rev-listตัวเลือกมีการปรับปรุง :

ผู้ออกแบบ reflog ในผลลัพธ์อาจแสดงเป็นref@{Nth}(โดยที่Nthดัชนีย้อนกลับตามลำดับเวลาใน reflog) หรือเป็นref@{timestamp}(ด้วยการประทับเวลาสำหรับรายการนั้น) ขึ้นอยู่กับกฎไม่กี่

มันรวมถึง : - การปรับปรุงเกี่ยวกับ--date=raw:

แสดงวันที่เป็นวินาทีตั้งแต่ยุค (1970-01-01 00:00:00 UTC) ตามด้วยช่องว่างจากนั้นเขตเวลาเป็นออฟเซ็ตจาก UTC ( +หรือ-ด้วยตัวเลขสี่หลักสองคนแรกคือชั่วโมงและ สองวินาทีคือนาที)
เช่นราวกับว่าเวลาที่จัดรูปแบบด้วยstrftime("%s %z"))
โปรดทราบว่า-localตัวเลือกจะไม่ส่งผลกระทบต่อseconds-since-epoch ค่า (ซึ่งวัดได้เสมอใน UTC) แต่จะเปลี่ยนค่าของเขตเวลาประกอบ

และตัวเลือกใหม่: --date=unix

แสดงวันที่ในรูปแบบ Unix epoch timestamp (วินาทีตั้งแต่ 1970)
เช่น--rawนี้จะเป็น UTC เสมอดังนั้นจึง-localไม่มีผลกระทบใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.