[Git/Github] Git 심화 명령어3 — commit --amend(최근 커밋 덮어쓰기)

dEpayse
dEpayse_publication
2 min readAug 7, 2022

이번 포스트에서는 commit 의 --amend 플래그를 통해 가장 최근 커밋을 덮어쓰는 방법을 알아보려고 한다.

--amend

amend 는 가장 최근 커밋을 덮어쓰는 플래그이다. 사전적 의미는 ‘수정하다.’라는 뜻을 갖고 있다. 예시로 다음 상황을 가정해보자.

  • 어떤 기능을 구현하여 커밋을 생성했는데, 방금 생성한 커밋에 포함돼야 할 내용을 잊어버렸다.

만약 amend 플래그가 없었다면, 아래와 같은 과정을 거쳐줘야 한다.

  1. ‘git reset --soft <직전 commit id>’ 로 커밋을 취소한다.
  2. 방금 생성한 커밋에 포함돼야 할 내용을 추가로 작성하고, 수정한 파일 중에 새로운 파일이 있다면 ‘git add <파일명>’ 명령어로 stage 에 올린다.
  3. 다시 커밋을 생성한다.

여기서 또 실수가 있어 직전 커밋에 수정사항을 반영하고 싶다면 1~4번까지의 과정을 다시 거쳐야한다. 하지만 amend 플래그를 이용한다면, 아래와 같이 과정이 조금 더 간단해진다.

  1. 방금 생성한 커밋에 포함돼야 할 내용을 추가로 작성하고, 추가로 수정한 파일을 ‘git add <파일명>’ 명령어로 stage 에 올린다.
  2. ‘git commit --amend’ 명령어를 입력하여 방금 커밋을 수정한다.
Fig1. git commit --amend example
  • ‘git commit --amend’ : 가장 최근의 커밋을 덮어쓴다.

amend 주의사항

  • amend 시 commit id 도 변경된다. (commit id 는 commit 이 생성된 시간, 부모 commit id, commit 메세지 등 여러 요소들에 의해 결정되는데, --amend 를 실행하면 정보가 변경되기 때문)
  • 따라서 원격 저장소에 이미 푸쉬가 된 commit 을 amend 하여 push 하면 충돌이 발생할 수 있다.

Reference

  1. [Git official — Book] — https://git-scm.com/book/en/v2
  2. [즐겁게, 코드] “당신이 찾던 커밋 수정법, git commit — amend 사용하기” — https://merrily-code.tistory.com/200

--

--

dEpayse
dEpayse_publication

나뿐만 아니라 다른 사람들도 이해할 수 있도록 작성하는, 친절한 블로그를 목표로.