Notice
Recent Posts
Recent Comments
관리 메뉴

즐겁게, 코드

당신이 찾던 커밋 수정법, git commit --amend 사용하기 본문

😾 Git & Github

당신이 찾던 커밋 수정법, git commit --amend 사용하기

Chamming2 2021. 8. 30. 19:27

오늘은 커밋을 수정하는 방법을 소개해보려 합니다.

이렇게 잘못 남긴 커밋 메시지가 있을때, 여러분들은 어떻게 메시지를 수정하시나요?

 

1번 유형 : 주석 등 무의미한 변경사항을 만들고, 메시지를 고쳐 새로운 커밋을 남긴다.

2번 유형 : git reset --soft <커밋 해시> 를 통해 커밋을 취소하고, 메시지를 고쳐 커밋을 다시 남긴다.

3번 유형 : 다음부터는 잘 남겨야겠다고 다짐한다. (^^;)

 

세 방법 모두 잘못된 방법은 아니지만 저는 지금까지 2번 유형으로 커밋 메시지를 수정하곤 했는데요, 이보다 더 쉬운 방법이 있습니다.

바로 --amend 플래그를 사용하는 방법입니다.

커밋 메시지 수정하기

git commit 커맨드에 --amend 플래그를 붙이면 직전에 남긴 커밋을 수정할 수 있게 됩니다.

git commit --amend

커맨드를 입력하면 직전에 남긴 커밋 메시지를 수정할 수 있도록 텍스트 에디터가 나타나고, 커밋 메시지를 수정하면 새로운 커밋의 추가 없이 커밋이 수정됩니다.


주의점

단, --amend 를 사용할 때 주의해야 할 점이 하나 있습니다.

--amend 를 통해 커밋을 수정한 다음, 커밋 아이디(sha1)도 변한 것을 눈치채셨나요?

 

커밋 아이디는 커밋이 생성된 시간, 부모 커밋의 아이디, 커밋 메시지 등 여러 요소들에 의해 결정되는데요, --amend 를 실행하면 적어도 하나 이상의 정보(커밋이 생성된 시간)가 수정되므로 커밋 아이디가 완전히 변하게 됩니다.

 

이는 원본 저장소를 포크하고 PR을 날리려 할 때 문제가 될 수도 있는데요, 포크해온 저장소의 커밋을 --amend 로 수정하고 PR을 날리려 하면 커밋 트리가 일치하지 않아 컨플릭트의 원인이 될 수도 있습니다.


작업 수정하기

어렵게 짠 sayHello() 함수가 인사 대신 에러를 리턴하는 모습입니다.

// index.js

function sayHello() {
    return 'Error!';
};

그런데 에러를 확인하지 못하고 커밋을 그대로 남겨버린 모습이네요.

한번 sayHello 함수가 제대로 인사하도록 고쳐보겠습니다.

// index.js

function sayHello() {
    return 'Hello!';
};

보기 좋네요! 그럼 이제 git add .git commit 으로 새로운 커밋을 남겨야 할까요?
새로운 커밋을 남길 필요 없이, --amend 플래그를 사용하면 새로운 커밋을 추가하지 않고 작업을 수정할 수 있습니다.

변경사항을 만들고 git add . 를 통해 수정한 내용을 스테이징한 다음, git commit --amend 로 커밋 메시지를 수정하면 변경된 코드와 커밋 메시지가 이전 커밋에 반영됩니다.

반응형
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆