"ngày" là một chút khái niệm lỏng lẻo trong git. Một cam kết sẽ có một ngày tác giả có thể là một thời gian tốt trong quá khứ trước khi ai đó thực sự rút / cam kết vào kho lưu trữ của họ, đồng thời cam kết có thể bị từ chối và cập nhật để lên trên một cam kết rõ ràng mới hơn.
Một cam kết cũng có một ngày cam kết được cập nhật nếu một cam kết bị từ chối hoặc sửa đổi dưới bất kỳ hình thức nào. Các cam kết này có nhiều khả năng theo một thứ tự thời gian nào đó nhưng bạn vẫn cảm thấy xót xa cho người giao dịch có thời gian chính xác được đặt trên máy tính của mình và thậm chí, một cam kết không được sửa đổi có thể nằm trên một nhánh tính năng trên kho lưu trữ từ xa vô thời hạn trước đó được sáp nhập vào nhánh chính của một kho lưu trữ trung tâm.
Điều có lẽ hữu ích nhất cho mục đích của bạn là ngày giới thiệu trên kho lưu trữ cụ thể được đề cập. Nếu bạn đã bật reflog cho mỗi nhánh (xem git config core.logAllRefUpdates
) thì bạn có thể sử dụngref@{date}
cú pháp để chỉ vị trí của một nhánh tại một thời điểm cụ thể.
Ví dụ
git log -p master@{2009-07-01}..master@{now}
Bạn cũng có thể sử dụng các mô tả 'mờ' như:
git log -p "master@{1 month ago}..master@{yesterday}"
Các lệnh này sẽ hiển thị tất cả các xác nhận đã 'xuất hiện' trong nhánh đã cho của kho lưu trữ bất kể chúng thực sự bao nhiêu tuổi theo tác giả và ngày cam kết.
Lưu ý rằng reflog trên mỗi nhánh là dành riêng cho kho lưu trữ, vì vậy nếu bạn đang chạy lệnh log trên bản sao và bạn không kéo (giả sử) một tháng thì hãy rút tất cả các thay đổi cho tháng trước cùng một lúc, sau đó tất cả các thay đổi của tháng trước sẽ xuất hiện trong một @{1 hour ago}..@{now}
phạm vi. Nếu bạn có thể chạy lệnh log trên kho lưu trữ 'trung tâm' mà mọi người đẩy tới, thì nó có thể làm những gì bạn muốn.