Có cách nào để khiến git-reflog hiển thị một ngày bên cạnh mỗi mục không?


305

Lệnh git-reflog theo mặc định không hiển thị một ngày bên cạnh mỗi mục, điều này gây cho tôi một sự giám sát kỳ lạ; Tôi nghĩ rằng điều này sẽ rất hữu ích.

Có bất kỳ tùy chọn dòng lệnh, hoặc các điều chỉnh khác, có thể được sử dụng để làm cho nó hiển thị khi mỗi mục nhập reflog được thêm vào không? Các manpage không phải là sắp tới ...

Câu trả lời:


453

Khi trang man viết, bạn có thể sử dụng các tùy chọn cho git log, nói git reflog --pretty=shorthoặc bất kỳ tùy chọn nào bạn muốn

thử

git reflog --date=iso

11
Điều này thay thế số đầu (hoặc bất kể thuật ngữ chính xác là gì) bằng ngày. Bạn có thể có cả hai?
Marco Eckstein

7
@Marco có vẻ như bạn sẽ phải sử dụng định dạng tùy chỉnh : git reflog --format='%C(auto)%h %<|(17)%gd %C(blue)%ci%C(reset) %s'. Tôi đã thêm một bí danh cho điều này: github.com/blueyed/dotfiles/commit/
mẹo

1
@blueyed Không hoàn toàn giống nhau - --date=isotrong lệnh reflog hiển thị khi mục reflog đó được tạo, không phải là thời gian của cam kết. Vẫn đánh giá cao bí danh của bạn, vì tôi đã sử dụng nó để tạo ra một reflog đẹp hơn.
Johan Henkens

36

Bạn có thể sử dụng --walk-reflogsbiến thể của git log:

git log -g

Điều này khá dài dòng theo mặc định và in ngày trong số những thứ khác. Bạn có thể định dạng nó với --pretty=cờ tiêu chuẩn .

Bạn cũng có thể sử dụng lệnh reflog trực tiếp với --pretty=cờ để định dạng đầu ra.

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

Trong định dạng trên, %cdhiển thị ngày cam kết ở bên trái của đầu ra reflog bình thường.


9
%cd, không may hiển thị ngày cam kết các điểm reflog đến, thật không may, đó không phải là ngày tôi (hoặc OP) đứng sau: chúng tôi muốn ngày của mục nhập reflog.
Thanatos

10
git log --walk-reflogs --date=isovừa làm cho ngày của tôi
Alois Mahdal

7

Bạn phải sử dụng một định dạng tùy chỉnh:

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

Trong định dạng trên, %hlà hàm băm cam kết, %crlà ngày giao dịch tương đối, %gslà chủ đề reflog và, %slà chủ đề cam kết. Nhìn vào tài liệu git-log cho các trình giữ chỗ khác có thể. Chẳng hạn, sử dụng %cithay vì %crsẽ hiển thị ngày cam kết tuyệt đối.

Bạn có thể lưu cái này trong ~ / .gitconfig bằng prettyđịnh dạng tùy chỉnh và tham chiếu nó qua bí danh:

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

1
Vấn đề với điều này là %gdkhông hiển thị cùng ngày với @{now}. Khi tìm kiếm reflog, biết thời gian chính xác có thể thực sự quan trọng (ví dụ: "Tôi biết nó ở trạng thái phù hợp vào lúc 8:57").
ErikE 21/07/2015

2
@ErikE - Chỉ cần thay đổi crđể ciđể có được những dấu thời gian đầy đủ của mỗi hành động:git reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%ci%C(reset) %gs (%s)'
n1k31t4

6

Cho biết gitở định dạng nào, reflogmục nhập được tính hoặc mục được tính thời gian reflog, nghĩa là

$ git reflog @{now}

$ git reflog @{0}

Lập trình viên trong tôi không thích "ngôn ngữ tự nhiên" bên trong {}, nhưng thật vui vì kỹ thuật này cũng hoạt động với --date=iso.
mwfearnley

5

Lưu ý git 2.10 (quý 3 năm 2016) cải thiện tài liệu về ngày với git reflog.

Xem cam kết 642833d , cam kết 1a2a1e8 (27 tháng 7 năm 2016) và cam kết d38c7b2 , cam kết 522259d , cam kết 83c9f95 , cam kết 2b68222 (22 tháng 7 năm 2016) bởi Jeff King ( peff) .
Giúp đỡ: Jeff King ( peff) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết 0d32799 , ngày 08 tháng 8 năm 2016)

Các rev-listtùy chọn được cập nhật :

Trình chỉ định reflog trong đầu ra có thể được hiển thị dưới dạng ref@{Nth}(trong đó Nthchỉ số theo thời gian đảo ngược trong reflog) hoặc như ref@{timestamp}(với dấu thời gian cho mục đó), tùy thuộc vào một vài quy tắc.

Nó bao gồm : - một bản cập nhật về --date=raw:

hiển thị ngày dưới dạng giây kể từ kỷ nguyên (1970-01-01 00:00:00 UTC), theo sau là khoảng trắng và sau đó múi giờ dưới dạng bù từ UTC (a +hoặc -có bốn chữ số; hai chữ số đầu tiên là giờ và hai giây là phút).
Tức là, như thể dấu thời gian được định dạng với strftime("%s %z")).
Lưu ý rằng -localtùy chọn không ảnh hưởng đến seconds-since-epoch giá trị (luôn được đo bằng UTC), nhưng không chuyển đổi giá trị múi giờ đi kèm.

Và một lựa chọn mới: --date=unix

hiển thị ngày dưới dạng dấu thời gian epoch Unix (giây kể từ 1970).
Như với --raw, điều này luôn luôn trong UTC và do đó -localkhông có hiệu lực.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.