[Git] Git 커밋 메시지 수정하기 (`git rebase` 방식)

헤이안나·2025년 5월 19일
0

📝 목적

이미 커밋한 메시지를 나중에 수정해야 할 경우, git rebase -i 명령어를 통해 커밋 메시지를 안전하게 수정하는 전체 과정을 정리했습니다.
(특히 여러 개의 커밋 메시지를 한 번에 수정하고, GitHub에도 반영하고 싶은 경우)


🔧 1. 최근 커밋 목록 확인

git log --oneline

🔁 2. 수정할 커밋을 포함한 개수만큼 rebase 시작

(: 최근 3개 커밋 중 수정할 커밋이 있다면)

git rebase -i HEAD~3

✍️ 3. 수정할 커밋을 pickreword 로 변경

pick 771035b chore: reset-project 실행
reword e3e9a4e feat: Expo Router 및 Navigation 세팅
pick f14127a docs: README.md 수정

i 또는 o로 입력 모드 진입 → 수정 후 저장(cmd + S) 후 ESC → :wq로 저장하고 나가기


📝 4. 메시지 편집창에서 설명(본문) 수정

feat: Expo Router 및 Navigation 세팅 (Tab, Stack 테스트)

- Tab Navigation 구현
- Stack Navigation 모달 테스트
- expo 버전 범위 (~ → ^) 변경 포함

vim 기준:

  • i ← 현재 줄에서 바로 수정
  • o ← 아래 줄 새로 만들어서 입력
  • ESC → :wq ← 반드시 저장(cmd + S) 후 종료해야 적용됨

⚠️ 5. rebase 중 충돌 발생 시 해결 방법

충돌 메시지 예시:

error: The following untracked working tree files would be overwritten by merge:
  app/(tabs)/search.tsx

👉 해결 순서:

  1. 파일 백업
mkdir -p tmp-backup
cp "app/(tabs)/search.tsx" tmp-backup/
cp "app/modal.tsx" tmp-backup/
  1. 파일 삭제
rm "app/(tabs)/search.tsx"
rm "app/modal.tsx"
  1. rebase 계속
git rebase --continue
  1. 백업 파일 복원
mv "tmp-backup/search.tsx" "app/(tabs)/"
mv "tmp-backup/modal.tsx" "app/"
rm -r tmp-backup/

🚀 6. GitHub에 반영 (rebase는 히스토리 변경이므로 강제 푸시 필요)

git push --force

✅ 마무리 확인

git log --oneline   # 수정된 메시지 확인

→ GitHub에서도 커밋 메시지 수정 완료된 것을 확인할 수 있음!


💡 팁: 괄호, 공백 있는 경로는 반드시 따옴표로 감싸기

cp "app/(tabs)/search.tsx" tmp-backup/

🎉 완료!

git rebase -i를 이용한 커밋 메시지 수정은 조금 까다롭지만,
형상관리 기록을 깨끗하게 유지하려면 꼭 배워둘 가치가 있어요 💪

🛠️ vim 기준 저장 방법 요약

i  ← 현재 커서 위치에서 바로 입력  
o  ← 아래에 줄 추가 + 입력모드  
ESC → :wq ← 저장 후 종료 (필수)

⚠️ 협업 시 주의사항 (꼭 읽고 쓰기!)

git rebase -igit commit --amend커밋 히스토리를 다시 쓰는 명령어입니다.
혼자 쓸 땐 매우 유용하지만, 협업 시에는 주의가 필요합니다.


🧨 이런 문제가 생길 수 있어요:

  • 내가 rebase 또는 amend한 후 --force push를 하면,
  • 다른 팀원이 이미 pull 받은 히스토리와 충돌 발생
  • → 커밋 ID가 달라져서 협업 흐름이 꼬일 수 있음

✅ 안전하게 사용하는 팁:

상황사용 여부이유
혼자 작업하는 브랜치✅ 가능영향 없음
PR 올리기 전 내 브랜치⚠️ 가능하지만 사전 공지 필수push 강제 덮어쓰기 때문
공유 브랜치(main, develop 등)❌ 금지팀 전체 작업에 영향 줄 수 있음

📢 강제 푸시(--force) 전 꼭 체크하세요!

  • 지금 이 브랜치 혼자만 작업 중인가?
  • 다른 사람이 이 커밋 기반으로 작업하고 있진 않나?
  • 팀에게 공유하고 동의 받았나?

💡 커밋 정리는 좋지만, 팀워크를 깨지 않게 쓰는 게 더 중요해요!

Add Tip

직전 커밋 하나만 수정하려는 거라면 : git commit --amend
메시지 수정 후 저장하고 종료 → git push --force로 반영
profile
리액트 공부하는 사람

0개의 댓글