개요
이 글에서는 Git Fork에서 커밋 번호를 표시하는 방법을 설명합니다.
작성한 이유
회사에서 Unreal Engine으로 게임을 개발할 때 Perforce를 사용합니다. 그 과정에서 Git보다 Perforce가 편리하다고 느낀 점이 있습니다. 바로 제출(Submit)이 숫자(체인지리스트 번호)로 관리된다는 점입니다.
예시: CL12345
팀 내 소통 시 "그 수정은 CL12345 이후 버전부터 반영됩니다"와 같이 이야기합니다.
어떤 제출이 최신인지, 어디까지 반영됐는지 한눈에 파악 가능하며, 숫자가 클수록 최신이기 때문에 검색 시에도 편리합니다.
반면 Git은 SHA 해시만 보여주기 때문에 어떤 커밋이 최신인지 확인하기 번거롭습니다.
git show <커밋 SHA>
로 확인할 수 있지만 매번 확인하는 것은 번거롭습니다.
Git Fork에서는 커밋이 다음과 같이 표시됩니다:
또한 게임 패키지 버전 표기에서 Major.Minor.Patch.Changelist
형식이 일반적이라고 합니다(GPT가 말해줌).
이 Changelist 부분에 커밋 번호를 넣으면 좋겠다고 생각했습니다.
이번 글에서는 Git에서 커밋 번호를 표시하는 방법을 설명합니다.
환경
- Unreal Engine 5.6.0
- Git Fork 2.9.0.0
- Windows 11 Pro
본문
저는 Git Fork라는 Git GUI 클라이언트를 사용하므로 Git Fork를 예로 설명합니다.
GitHub Desktop, Sourcetree 등 다른 클라이언트에서도 비슷한 설정이 가능하니 시도해보세요.
git tag
명령어를 사용하면 커밋 옆에 원하는 정보를 표시할 수 있습니다.
일반적으로 커밋을 우클릭한 후 "Add Tag"를 선택하면 수동으로 태그를 추가할 수 있습니다.
또한,
git rev-list --count HEAD
명령어를 사용하면 현재 커밋 개수를 확인할 수 있습니다.
이 숫자를 자동으로 태그에 붙이면 목표 달성입니다.
예시로, 4번 커밋했음을 확인할 수 있습니다:
이제 이 숫자를 자동으로 가져와 커밋할 때마다 태그를 추가하는 간단한 구조를 만듭니다.
Git Hook 사용하기
Git에는 특정 이벤트 발생 시 자동으로 실행되는 스크립트인 "Hook" 기능이 있습니다.
다음 파일을 편집합니다:
ProjectFolder/.git/hooks/post-commit
다음 스크립트를 추가하세요:
project/.git/hooks/post-commit1# 전체 커밋 개수 가져오기 2count=$(git rev-list --count HEAD) 3 4# CL123 형식의 태그 생성 5tag_name="CL$count" 6 7# 태그 생성 또는 업데이트 8git tag -f "$tag_name" 9 10# 필요 시 자동으로 푸시 가능 11# git push origin "$tag_name" 12 13echo "Tagged commit as $tag_name"
태그를 팀 전체와 공유하려면 # git push origin "$tag_name"
부분의 #
을 삭제하세요.
이제 완료입니다!
커밋할 때마다 Git Fork에서 CL<커밋 번호>
가 커밋 옆에 표시됩니다.
결과
태그를 일괄 삭제하고 싶을 때
태그가 수천, 수만 개 이상 많아지면 Git 성능 저하가 발생할 수 있습니다.
이 경우 불필요한 오래된 태그를 정리하고 최신 커밋부터 다시 태그를 붙이는 것을 추천합니다.
로컬 태그 전체 삭제
1git tag | xargs -L 1 | xargs git tag --delete
원격 태그 전체 삭제
1git ls-remote --tags --refs origin | cut -f2 | xargs git push origin --delete
결론
Perforce는 정말 편리합니다.
Git을 사용하면서도 Perforce 같은 경험을 원하게 되는 제 자신을 되돌아보게 됩니다.