Trong Git 1.8 .3 và sau đó, có hỗ trợ gốc cho điều này trong pretty format, sử dụng cú pháp %<(N)
để định dạng trình giữ chỗ tiếp theo là N cột rộng:
$ git log --pretty=format:'%h %<(20)%an %s' -10
Đối với các phiên bản trước 1.8.3, phiên bản trước của câu trả lời này, được giữ lại bên dưới, sẽ hoạt động. Đây là một giải pháp trong Bash sử dụng read
để phân tích các dòng log lại, và printf
để in chúng ra, với trường chiều rộng cố định cho tên tác giả sao cho các cột sẽ được xếp hàng. Nó giả định rằng |
sẽ không bao giờ xuất hiện trong tên của tác giả; bạn có thể chọn một dấu tách khác nếu bạn nghĩ rằng đó có thể là một vấn đề.
git log --pretty=format:'%h|%an|%s' -10 |
while IFS='|' read hash author message
do
printf '%s %-20s %s\n' "$hash" "$author" "$message"
done
Bạn có thể tạo này như một bí danh sử dụng:
[alias]
mylog = "!git log --pretty=format:'%h|%an|%s' -10 | while IFS='|' read hash author message; do printf '%s %-20s %s\n' \"$hash\" \"$author\" \"$message\"; done"
tôi chắc chắn rằng bạn có thể làm điều này trong nhân vật ít sử dụng awk
nhưng như the saying đi,
Bất cứ khi nào phải đối mặt với một vấn đề, một số người nói "Cho phép sử dụng AWK." Bây giờ, họ có hai vấn đề.
Tất nhiên, có nói rằng, tôi đã phải tìm ra cách để làm điều đó trong awk
đó là một chút ngắn hơn:
git ... | awk -F '|' '{ printf "%s %-20s %s\n", $1, $2, $3 }'
Nguồn
2010-09-02 22:37:26
Nếu có tiện ích Unix đóng hộp để làm điều này tôi rất muốn biết về điều đó! Điều tốt nhất tôi có thể nghĩ là đầu ra định dạng Perl, đó là một nỗi đau. – zwol
@Zack: cột người đàn ông là bạn của bạn. – toong
Điều đó dường như là một BSDism, thật không may. – zwol