그것은 당신에게 다음과 같은 것을 줄 것입니다 :
$ 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>...]'
방금 다음과 같이 중복 접두사가있는 커밋을 찾아 실제 Git 저장소에서 이것을 테스트했습니다.
git rev-list master | cut -c-4 | sort | uniq -c | sort -nr | head
이것은의 개정 목록을 가져 와서 master처음 4자를 잘라 내고 나머지는 버리고 복제본을 세고 숫자로 정렬합니다. ~ 1500 커밋의 상대적으로 작은 저장소에서 일반적인 4 자리 접두사가있는 수정본이 상당히 많았습니다. Git에서 지원하는 가장 짧은 법적 길이 인 것 같아서 4 자리 접두사를 선택했습니다. (모호하지 않더라도 3 자리 이하로 작동하지 않습니다.)
그러나 이것은 오타가 아니기 때문에 중복 SHA1 (2와 3으로 시도)의 수에 관계없이 모호한 SHA1에 대한 오류 메시지가 두 번 나타나는 이유를 모르겠습니다.
error: short SHA1 cee157 is ambiguous.
error: short SHA1 cee157 is ambiguous.
(모두 켜짐 stderr. 실제로 전체 출력은 켜져 stderr있지만 아무것도 켜지지 않습니다 stdout.)
Windows에서 테스트 :
$ git --version
git version 1.8.1.msysgit.1
버전이 1.8.1 이상인 경우 Git 이 중복에 대해 경고 한다고 말하는 것이 안전하다고 생각합니다 . (복제본으로 작동하지 않을 것입니다.) 훨씬 오래된 버전도 이런 식으로 작동했다고 생각합니다.
최신 정보
이 테스트 할 때, 당신은 때문에, 4 자리 SHA1의 최소 필요 int minimum_abbrev = 4에 environment.c . ( 그것을 지적 해 준 @devnull 에게 감사드립니다 !)
man gitrevisions당신은 그것의 전체 SHA1-1 이름 또는 "저장소 내에서 고유 선도적 인 문자열"로 개정 이름을 수 있다고 때문에 적어도 경고가 주어집니다 의미한다.