Nó sẽ cung cấp cho bạn một cái gì đó như thế này:
$ git log cee157
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
fatal: ambiguous argument 'cee157': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
Tôi vừa thử nghiệm điều này trên kho lưu trữ Git thực, bằng cách tìm các xác nhận có tiền tố trùng lặp như thế này:
git rev-list master | cut -c-4 | sort | uniq -c | sort -nr | head
Cái này lấy danh sách các bản sửa đổi master
, cắt bỏ 4 ký tự đầu tiên và loại bỏ phần còn lại, đếm các bản sao và sắp xếp số. Trong kho lưu trữ tương đối nhỏ của tôi ~ 1500 cam kết, tôi đã tìm thấy khá nhiều bản sửa đổi với tiền tố 4 chữ số phổ biến. Tôi đã chọn một tiền tố gồm 4 chữ số bởi vì đó dường như là độ dài pháp lý ngắn nhất được Git hỗ trợ. (Không hoạt động với 3 chữ số trở xuống, ngay cả khi không mơ hồ.)
Btw đây không phải là một lỗi đánh máy, tôi không biết tại sao thông báo lỗi về SHA1 mơ hồ xuất hiện hai lần, bất kể số lượng SHA1 trùng lặp (đã thử với 2 và 3):
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
(Cả hai trên stderr
. Trên thực tế toàn bộ đầu ra là bật stderr
, không có gì trên stdout
.)
Đã thử nghiệm trong Windows:
$ git --version
git version 1.8.1.msysgit.1
Tôi nghĩ thật an toàn khi nói rằng nếu phiên bản của bạn> = 1.8.1, Git sẽ cảnh báo bạn về các bản sao. (Nó sẽ từ chối hoạt động với các bản sao.) Tôi đoán rằng các phiên bản cũ hơn cũng hoạt động theo cách này.
CẬP NHẬT
Khi kiểm tra điều này, bạn cần tối thiểu 4 chữ số SHA1, vì int minimum_abbrev = 4
trong môi trường.c . (Cảm ơn @devnull đã chỉ ra điều đó!)
man gitrevisions
, trong đó ít nhất ngụ ý một cảnh báo sẽ được đưa ra vì nó nói rằng bạn có thể đặt tên một bản sửa đổi với tên SHA1-1 đầy đủ của nó hoặc "một chuỗi con hàng đầu duy nhất trong kho lưu trữ".