Một trong những đồng nghiệp của tôi thời gian gần đây nhận thấy sự khác nhau giữa lệnh bình thường git log
, và và bí danh sau:Tại sao một số cam kết git ẩn bên trong vỏ Cygwin?
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative
Sau một chút poking, chúng tôi phát hiện ra rằng nó có thể liên quan đến bash Cygwin.
Dưới đây là những phát hiện của chúng tôi:
git log --graph
tất cả các cam kết có thể nhìn thấy
git log --oneline
một số cam kết mất tích ... được rồi! chúng ta hãy chuẩn bị một báo cáo lỗi bằng cách chuyển hướng đầu ra vào một tập tin văn bản:
git log --oneline > test.txt
Than ôi, tất cả các cam kết có thể nhìn thấy trong
test.txt
?!? Hãy điều tra thêm bằng cách tách biệt bí danh. Loại bỏ mã màu:git log --graph --pretty=format:'%h - %d %s (%cr) <%an>'
một số cam kết mất tích. Vì vậy, nó phải là một trong các biến ...
[... một số frobnications sau ...]
git log --graph --pretty=format:'%h - %d %s (%cr)'
tất cả các cam kết có thể nhìn thấy
git log --graph --pretty=format:'%h - %d %s <%an>'
tất cả các cam kết hiển thị
Có vẻ như vỡ sau khi một số kết hợp nhất định của biến. Trong trường hợp này là (%cr) <%an>
Tôi cũng đã thử cùng một kho lưu trữ trên linux và trên đó, nó hoạt động như mong đợi (nghĩa là tất cả các cam kết được hiển thị trong nhật ký).
Chúng tôi muốn biết tại sao điều này xảy ra.
Bạn có cố gắng tránh ''>' 'và' '<' 'trong định nghĩa bí danh của bạn, để xem lệnh có chạy tốt hơn trong phiên Cygwin của bạn không? – VonC
Loại bỏ các dấu ngoặc nhọn không giải quyết được vấn đề. Kỳ lạ thay, bây giờ một cam kết bổ sung xuất hiện trong nhật ký. Nhưng họ vẫn không phải ở đó. – exhuma
Ok, chỉ cần kiểm tra. – VonC