Key

scroll

Key Blog

  • Key 홈페이지>
  • 블로그>
  • git fork 自動加上提交編號教學|用 git 標籤重現 perforce changelist 機制
  • Git Fork에서 커밋 번호 자동 추가하는 방법|Git 태그로 Perforce Changelist 구현

    @kiikey4(Key Zhao)

    Git Fork에서 커밋 번호 자동 추가하는 방법|Git 태그로 Perforce Changelist 구현

    게시일 2025년 7월 2일

    0

    개요

    이 글에서는 Git Fork에서 커밋 번호를 표시하는 방법을 설명합니다.

    작성한 이유

    회사에서 Unreal Engine으로 게임을 개발할 때 Perforce를 사용합니다. 그 과정에서 Git보다 Perforce가 편리하다고 느낀 점이 있습니다. 바로 제출(Submit)이 숫자(체인지리스트 번호)로 관리된다는 점입니다.

    예시: CL12345

    PerforceChangelist_hsbl5d

    팀 내 소통 시 "그 수정은 CL12345 이후 버전부터 반영됩니다"와 같이 이야기합니다.
    어떤 제출이 최신인지, 어디까지 반영됐는지 한눈에 파악 가능하며, 숫자가 클수록 최신이기 때문에 검색 시에도 편리합니다.

    반면 Git은 SHA 해시만 보여주기 때문에 어떤 커밋이 최신인지 확인하기 번거롭습니다.
    git show <커밋 SHA>로 확인할 수 있지만 매번 확인하는 것은 번거롭습니다.

    Git Fork에서는 커밋이 다음과 같이 표시됩니다:

    GitForkCommit_qpjhfi

    또한 게임 패키지 버전 표기에서 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"를 선택하면 수동으로 태그를 추가할 수 있습니다.

    GitForkGUIAddTag_rvpqvy

    또한,
    git rev-list --count HEAD 명령어를 사용하면 현재 커밋 개수를 확인할 수 있습니다.
    이 숫자를 자동으로 태그에 붙이면 목표 달성입니다.

    예시로, 4번 커밋했음을 확인할 수 있습니다:

    ShowCommitCountCommand_bxuwjr

    이제 이 숫자를 자동으로 가져와 커밋할 때마다 태그를 추가하는 간단한 구조를 만듭니다.

    Git Hook 사용하기

    Git에는 특정 이벤트 발생 시 자동으로 실행되는 스크립트인 "Hook" 기능이 있습니다.

    Git Hook이란

    다음 파일을 편집합니다:

    ProjectFolder/.git/hooks/post-commit

    PostCommitDirectory_y233th

    다음 스크립트를 추가하세요:

    project/.git/hooks/post-commit
    1# 전체 커밋 개수 가져오기 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<커밋 번호>가 커밋 옆에 표시됩니다.

    결과

    GitForkCommitAutoTagResult_zd6s4w

    태그를 일괄 삭제하고 싶을 때

    태그가 수천, 수만 개 이상 많아지면 Git 성능 저하가 발생할 수 있습니다.

    태그가 너무 많으면 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 같은 경험을 원하게 되는 제 자신을 되돌아보게 됩니다.

    참고자료

    0

    댓글

    댓글이 없습니다

    느낌을 댓글로 남겨보세요