본문 바로가기
Git

[Git] git commit --amend 명령어로 commit 수정하기 (4)

by 아마도개발자 2023. 11. 28.

 

커밋을 하다보면 메세지를 잘 못 입력하거나 파일 내용이 누락 되는 등 커밋을 되돌려야 하는 상황이 발생한다. 물론 git에는 이런 상황에서 이전 상태로 돌아가는 방법이 존재한다. 하지만, 한 번 작업을 되돌리면 되돌린 작업은 다시 복구할 수 없다는 점을 주의해야 한다. git에서는 대부분의 실수를 복구할 수 있는 방법이 있지만, 되돌린 작업에 대한 복구는 불가능하다는 점을 명심하고 시작하자.

 

가끔씩 완료한 커밋을 수정해야 하는 경우가 생긴다. 일부 파일이 빠졌거나, 메시지를 수정해야 한다거나 파일을 수정해야하는 등의 상황이 있을 수 잇다. 이럴 때는 git --amend 명령어를 통해 커밋을 수정할 수 있다.

 

커밋을 수정하는 첫 번째 케이스는 커밋 메세지를 수정하는 경우다.

이전 포스팅에서 실습했었던 레포지토리를 다시 가져와 커밋 메세지를 수정해보자.

 

여기서 마지막으로 커밋한 `example4 파일 추가` 라는 커밋 메세지에서 `example4 파일 개발 완료`로 수정이 필요하다고 가정한다면, bash 창에서

 

$git commit --amend

 

명령어를 사용하여 직전 커밋 메시지를 수정할 수 있다. 커맨드를 입력하고 bash창을 확인해보면

 

 

이렇게 커밋 메세지를 수정할 수 있는 에디터 화면이 나오게 된다. 여기서 `i` 키를 눌러 입력모드로 변경한 후, 커밋 메세지를 수정 한 뒤 저장하면

 

 

이렇게 커밋 메세지가 성공적으로 수정 된 것을 볼 수 있다!

 

하지만 여기서 주의할 점이 있다. amend로 변경된 커밋의 커밋ID가 변경되었다는 점을 꼭 알아두어야 한다. amend 명령어를 입력하면서, 하나 이상의 커밋 정보가 변경되었기 때문에 이에 따라 커밋ID도 변경이 된 것이다. 혼자 작업하는 경우에는 큰 문제가 없을 수도 있지만 원본 저장소가 따로 있고, 거기다가 Pull Request를 날리는 경우에 커밋ID가 일치하지 않아 충돌의 원인이 될 수도 있다.

 

 

두 번째 케이스는 파일 내부에 추가, 제거 등 수정사항이 있는 경우다. 

example4.md

 

위 이미지는 exampl4.md의 파일 내용이다. 커밋을 했을 당시에는 파일 작성을 잘 완료했다고 생각했었는데, 일부 빠진 내용이 있었다고 가정하자. 새로 추가할 내용을 커밋하려면 사실 

$git add example4
$git commit -m "example4 파일 수정"

 

이렇게 새로운 커밋을 만들어 내용을 반영할 수 있다. 하지만 이렇게 commit을 추가하게 되면 불필요한 커밋 노드가 늘어나게 되어 그래프를 지저분하게 만든다. 이를 방지하는 방법으로 amend 커맨드를 활용할 수 있다.

 

 

우선 이렇게 작업을 완료해주자. 이후 수정한 내용을 Staging Area에 올리고, amend를 활용해 커밋 메시지를 수정하면 변경된 내용과 변경된 커밋 메세지로 이전 커밋이 바뀌게 된다.

 

$git add example4
$git commit --amend

# 이후 수정

 

 

이렇게 파일 내용과 커밋 메세지 모두 성공적으로 수정된 것을 확인할 수 있다.

git commit --amend 명령어는 이후에 학습할 rebase와 함께 자주 쓰이는 유용한 커맨드이니 꼭 알아두도록 하자.