728x90
반응형

Git은 버전 관리 시스템의 표준이지만, 누구나 실수는 할 수 있습니다. 흔히 발생하는 실수 중 하나가 바로 커밋 메시지를 잘못 작성하는 것이죠. 다행히 Git은 이미 커밋된 메시지도 수정할 수 있는 강력한 기능을 제공합니다. 이번 포스팅에서는 Git 커밋 메시지를 변경하는 방법을 단계별로 자세히 알아보고, 자주 사용하는 명령어와 함께 실제 예시를 살펴보겠습니다. 특히, 이미 원격 저장소에 푸시된 커밋 메시지를 수정하는 방법을 집중적으로 다룹니다.

 

1. 최근 커밋 메시지 수정하기: 아직 푸시하지 않았다면?

가장 최근 커밋 메시지를 수정하는 것은 비교적 간단합니다. 아직 원격 저장소에 푸시하지 않은 경우 다음 단계를 따라 해 보세요.

STEP1. 터미널을 열고 Git 저장소가 있는 디렉토리로 이동합니다.

cd /path/to/your/repository

STEP2. 현재 브랜치와 상태를 확인합니다.

git status

STEP3. 다음 명령어를 입력하여 가장 최근 커밋 메시지를 변경합니다.

git commit --amend -m "새로운 커밋 메시지"

이 명령어는 가장 최근 커밋 메시지를 "새로운 커밋 메시지"로 변경합니다. 예를 들어, "오타 수정"이라는 메시지로 커밋한 후 "오타 수정"으로 변경하고 싶다면 다음과 같이 실행하면 됩니다.

git commit --amend -m "오타 수정"

주의: --amend 옵션은 커밋 내용 자체를 수정하는 것이 아니라 새로운 커밋을 생성하여 이전 커밋에 덮어씌우는 방식으로 동작합니다. 따라서 이미 원격 저장소에 푸시된 커밋에 대해서는 사용하지 않는 것이 좋습니다.

 

2. 이전 커밋 메시지 수정하기: 푸시 전이라면?

이전 커밋 메시지를 수정하려면 조금 더 복잡한 과정을 거쳐야 합니다. 이때 유용하게 사용되는 기능이 바로 대화형 리베이스(interactive rebase)입니다.

STEP1. 변경하고자 하는 커밋의 해시를 확인합니다.

git log

명령어를 사용하여 커밋 히스토리를 확인하고 수정할 커밋의 해시를 찾습니다. 예를 들어, 최근 5개의 커밋을 확인하려면 다음과 같이 실행합니다.

git log -n 5

STEP2. git rebase -i HEAD~n 명령어를 실행합니다.

여기서 n은 변경하고자 하는 커밋으로부터 현재까지의 커밋 수입니다. 예를 들어, 현재 HEAD에서 3번 전 커밋을 수정하려면 다음과 같이 실행합니다.

git rebase -i HEAD~3

STEP3. 텍스트 에디터가 열리면 변경하고자 하는 커밋 앞의 pickreword로 변경합니다.

pick abc1234 이전 커밋 메시지
pick 123def4 두 번째 커밋 메시지
pick 456ghi7 세 번째 커밋 메시지

만약 두 번째 커밋 메시지를 수정하고 싶다면 다음과 같이 reword로 변경합니다.

pick abc1234 이전 커밋 메시지
reword 123def4 두 번째 커밋 메시지
pick 456ghi7 세 번째 커밋 메시지

STEP4. wq 키를 눌러 파일을 저장하고 에디터를 닫으면 새로운 에디터가 열립니다.

이 에디터에서 커밋 메시지를 원하는 대로 수정합니다.

STEP5. 수정한 메시지를 저장하고 에디터를 닫으면 리베이스가 완료됩니다.

Git은 지정된 커밋부터 최신 커밋까지 모두 재작성합니다.

 

3. 이미 푸시한 커밋 메시지 변경하기: 신중하게 진행하세요!

이미 원격 저장소에 푸시된 커밋 메시지를 변경하는 것은 매우 위험한 작업입니다. 협업 중인 프로젝트라면 다른 개발자의 작업에 영향을 줄 수 있기 때문입니다. 따라서 가능하면 이 방법은 사용하지 않는 것이 좋습니다.

만약 꼭 필요한 경우라면 다음 단계를 따르세요.

STEP1. 위에서 설명한 방법 중 하나를 사용하여 로컬에서 커밋 메시지를 변경합니다.

STEP2. 변경 사항을 원격 저장소에 강제로 푸시합니다.

이때 --force-with-lease 옵션을 사용하는 것이 안전합니다. --force 옵션은 위험할 수 있으므로 주의해야 합니다.

git push --force-with-lease origin branch-name

예를 들어, main 브랜치에 강제로 푸시하려면 다음과 같이 실행합니다.

git push --force-with-lease origin main

주의: --force 옵션은 원격 저장소의 히스토리를 덮어쓰므로 매우 신중하게 사용해야 합니다.

 

4. Git Branch 활용 예시

다음은 새 기능을 추가하는 과정에서 커밋 메시지를 수정해야 하는 상황을 가정하여 Git branch를 활용하는 예시입니다.

  1. 새로운 브랜치를 생성합니다.  git checkout -b feature/new-feature
  2. 기능을 구현하고 커밋합니다. - git add . git commit -m "새로운 기능 추가"
  3. 커밋 메시지에 오타가 있는 것을 발견했습니다. 이 경우 --amend 옵션을 사용하여 수정합니다. - git commit --amend -m "새로운 기능 추가"
  4. 기능 구현을 완료하고 main 브랜치에 병합합니다. - git checkout main git merge feature/new-feature
  5. 원격 저장소에 푸시합니다. - git push origin main

 

5. 결론

이번 포스팅에서는 Git 커밋 메시지를 변경하는 다양한 방법을 자세히 알아보았습니다. 커밋 메시지는 프로젝트 히스토리를 이해하는 데 중요한 역할을 합니다. 명확하고 정확한 커밋 메시지를 작성하여 효율적인 협업 환경을 만들어 보세요! 하지만 이미 푸시된 커밋을 수정할 때는 항상 주의하고, 가능하면 팀과 상의 후 진행하는 것이 좋습니다. :)

 

6. 참조

https://git-scm.com/docs/git-rebase

https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks

728x90
반응형
vanillinav