Cách cấu hình 'git log' để hiển thị 'ngày cam kết'


127

Làm cách nào tôi có thể cấu hình git logđể hiển thị commit datethay vì author date?


25
@Colleen Mỗi cam kết có hai ngày được liên kết - Ngày tác giả và Ngày cam kết ( git show --pretty=fuller HEADđể xem một ví dụ). Đối với phát triển cục bộ, các bản vá này thường giống nhau, nhưng đối với các bản vá được thêm qua e-mail hoặc các cơ chế khác, chúng có thể khác nhau, trong đó Ngày tác giả là ngày bản vá được tạo và Ngày cam kết là ngày nó thực sự được áp dụng cho kho lưu trữ.
twalberg

Câu trả lời:


145

Có một số tùy chọn để in ngày đẹp. Có lẽ dễ nhất là chỉ cần sử dụng một trong các --prettyđịnh dạng được nướng sẵn , chẳng hạn như git log --pretty=fuller- điều này sẽ hiển thị cả hai ngày. Nếu bạn chỉ muốn xem một ngày, nhưng đặt nó thành ngày cam kết, bạn có thể sử dụng git log --format=<some stuff>. Tất cả các mã cho phép để xác định định dạng đều được ghi trong tài liệu git help log. Các cam kết ngày là một trong những %cd, %cD, %cr, %cthoặc %ci, tùy thuộc vào định dạng gì bạn thích nó trong.

Nếu đó là việc bạn muốn làm thường xuyên, hãy đặt nó trong một bí danh hoặc viết một tập lệnh bổ trợ để tiết kiệm khi nhập.


53

Bạn có thể sử dụng --pretty=formatvà sử dụng %crcho ngày cam kết tương đối.

Ví dụ:

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

Bạn có thể xác định bí danh trong git để làm cho điều này dễ sử dụng hơn. Tôi có những thứ sau trong của tôi .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

Trên Linux hoặc các hệ thống tương tự, bạn có thể sử dụng dấu ngoặc đơn 'thay vì dấu ngoặc kép ":

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

Với điều này, chỉ cần chạy git lolhoặc các biến thể khác để xem kết quả tốt.

Đây là kết quả của git lol --simplify-by-decoration:

đầu ra git lol

  • Nó có vẻ tốt. :)
  • loldễ nhập hơn logvà nghe cũng hay hơn.
    • Đồng thời cung cấp cho bạn quyền truy cập thông thường git lognếu bạn cần.
  • Đôi mắt của bạn có thể quét nội dung nhanh chóng bằng các màu sắc khác nhau.
  • Tên và e-mail rất hữu ích cho các dự án / tổ chức lớn với nhiều người đóng góp.
  • Sử dụng màu mặc định cho hash / ref vì nó đã khá tốt.

Đây là kết quả của git loldngày tháng ở định dạng ISO. Hữu ích khi xem chính xác ngày / giờ thực hiện cam kết, với phần thưởng là có thể dễ dàng xem múi giờ của người đóng góp.

nhập mô tả hình ảnh ở đây

Chỉnh sửa 2020-06 : Đã thêm ảnh chụp màn hình. Đã cập nhật để sử dụng %C(auto)(tự động / màu mặc định) cho %h(mã băm cam kết) và %d(tên giới thiệu). Đã thêm %cn(tên người cam kết) ngoài email.


1
Tôi gặp lỗi phân tích cú pháp: 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: lỗi cú pháp gần mã thông báo không mong muốn `('
frakman1

2
@ frakman1 - bạn cần phải bỏ "s để dòng trên chạy trong nhà ga
hoạt động

2
Dòng đã sửa: git log --graph --pretty = format: "% C (yellow)% h% Creset% C (cyan)% C (bold)% d% Creset% C (cyan) (% cr)% Creset% C (xanh lục)% ce% Creset% s "
RedSands

1

Tôi thích định dạng này hơn, không bao gồm tên tác giả và bao gồm ngày thực tế cho cam kết.

git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset  %C(green)%Creset %s" --date=short
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.