Git 교과서

코드 이력, 하나도 놓치지 마라!

버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!

Yes24 교보문고 알라딘 인터파크 길벗

커밋 아이디


이번에는 커밋의 상세 내용을 확인해 보겠습니다. 다음과 같이 터미널에서 log 명령어를 실행하면 로그 정보를 볼 수 있습니다.

infoh@hojin MINGW64 /e/gitstudy04 (master)
$ git log
commit aa92947d350db27b604d1351930d4f809f96886e (HEAD -> master) ☜ 아이디
Author: hojin <infohojin@gmail.com>
Date:   Sat Jan 5 20:09:48 2019 +0900
… 생략

각 커밋에는 aa92947d350db27b604d1351930d4f809f96886e 같은 이상한 영문과 숫자가 있습니다. 이를 커밋 아이디라고 합니다. 커밋 아이디는 특정 커밋을 가리키는 절대적 이름이고, 명시적 참조 값입니다.

커밋 아이디는 다수의 커밋을 구분할 수 있는 키이며, 브랜치나 태그 등에도 많이 사용합니다. 이는 6장에서 브랜치를 설명할 때 더 알아보겠습니다.


SHA1


커밋 아이디가 이렇게 복잡한 영어와 숫자로 된 이유는 깃이 SHA1이라는 해시3 알고리즘을 사용하기 때문입니다. SHA1 해시키 값은 40자리의 복잡한 hexa 값으로 되어 있습니다. 깃은 스테이지 영역의 변경된 내용을 기반으로 SHA1 해시키를 생성합니다. 따라서 SHA1 해시는 중복되지 않은 고유의 키를 생성할 수 있는 장점이 있습니다.

깃이 SHA1 해시를 이용하는 것은 콘텐츠 추적과 분산형 저장 관리를 운영하면서 충돌을 방지하기 위해서입니다.


단축키


SHA1 해시키는 매우 복잡한 모양의 영어와 숫자로 되어 있습니다. 해시는 40자리의 16진수로 입력하다 실수로 잘못 입력할 가능성이 높습니다. SHA1 해시키는 매우 큰 숫자이기 때문에 고유 접두사로 간략하게 사용할 수 있는데, 해시의 앞쪽 7자만으로도 중복을 방지하면서 전체 키 값을 사용할 수 있습니다.

해시는 매우 큰 값으로 웬만해서는 앞쪽 숫자 값이 변경되는 경우가 드뭅니다. 물론 전체의 키 값을 다 사용하는 것이 좋겠지만, 앞자리 몇 개만 사용해도 충분합니다.