:bulb: 이미 원격에 push한 직전 커밋의 내용이나 메시지를 수정하고 싶을 때, --amend로 직전 커밋에 합치고 force push하는 방법을 작성한다.

[01] 언제 사용하는가?

  • 원격에 push한 직후 오타, 누락 파일, 소소한 수정을 발견했을 때
  • 커밋 메시지를 고치고 싶을 때
  • 새 커밋을 만들어 이력을 늘리고 싶지 않을 때

[02] 사용 방법

2-1. 파일 수정 후 스테이징

수정할 파일을 편집한 뒤, staging area에 추가한다.

1
git add 수정한_파일_경로

출력 예:

1
$ git add _posts/2026-03-05-my-post.md

출력 없이 정상 완료된다.


2-2. 직전 커밋에 합치기

(A) 커밋 메시지를 유지하는 경우

1
git commit --amend --no-edit

출력 예:

1
2
3
[main a9b8c7d] docs: add git author change post
 Date: Wed Mar 12 10:00:00 2026 +0900
 1 file changed, 5 insertions(+), 2 deletions(-)

(B) 커밋 메시지도 함께 변경하는 경우

1
git commit --amend -m "docs: fix heading level in git post"

출력 예:

1
2
3
[main b8c7d6e] docs: fix heading level in git post
 Date: Wed Mar 12 10:00:00 2026 +0900
 1 file changed, 5 insertions(+), 2 deletions(-)

(C) 에디터에서 메시지를 수정하는 경우

1
git commit --amend

에디터(vi 등)가 열리며, 기존 커밋 메시지를 직접 편집할 수 있다. 저장 후 종료하면 반영된다.

:bulb: 파일 변경 없이 커밋 메시지만 고치고 싶다면, git add 없이 바로 git commit --amend -m "새 메시지"를 실행하면 된다.

옵션 설명:

옵션 설명
--amend 새 커밋을 만들지 않고 직전 커밋에 변경사항을 합침
--no-edit 커밋 메시지를 수정하지 않고 그대로 유지
-m "메시지" 커밋 메시지를 지정한 내용으로 변경
(옵션 없음) 에디터가 열려 기존 메시지를 직접 편집

2-3. 원격에 강제 push

이미 push한 커밋을 수정했으므로, 일반 push는 거부된다. force push가 필요하다.

1
git push --force-with-lease origin main

옵션 설명:

옵션 설명
--force-with-lease 내가 마지막으로 fetch한 이후 다른 사람이 push한 내역이 없을 때만 강제 push 허용. --force보다 안전

출력 예:

1
2
3
4
5
6
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 320 bytes | 320.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
To https://github.com/testuser/test-repo.git
 + a1b2c3d...a9b8c7d main -> main (forced update)

[03] 전체 흐름 요약

1
2
3
4
5
6
7
8
9
10
11
12
13
# --- 파일 + 메시지 모두 유지, 내용만 추가 ---
git add 수정한_파일_경로
git commit --amend --no-edit
git push --force-with-lease origin main

# --- 파일 수정 + 메시지도 변경 ---
git add 수정한_파일_경로
git commit --amend -m "새로운 커밋 메시지"
git push --force-with-lease origin main

# --- 파일 변경 없이 메시지만 변경 ---
git commit --amend -m "새로운 커밋 메시지"
git push --force-with-lease origin main

[04] 주의사항

:warning: 혼자 쓰는 repo에서만 자유롭게 사용한다. 팀원이 있는 브랜치에서는 반드시 사전 협의 후 진행한다.

상황 권장 방법
혼자 쓰는 repo / 브랜치 --amend + --force-with-lease 자유롭게 사용
팀원과 공유하는 브랜치 새 커밋으로 push (amend 사용 자제)
  • --amend커밋 해시가 변경되므로, 다른 사람이 이미 pull한 상태에서 force push하면 충돌이 발생한다.
  • --force-with-lease--force보다 안전하지만, 여전히 원격 이력을 덮어쓰는 동작이다.
  • 직전 커밋이 아닌 더 오래된 커밋을 수정하고 싶다면 git rebase -i를 사용해야 한다.