즐겁게, 코드
당신이 찾던 커밋 수정법, git commit --amend 사용하기 본문
오늘은 커밋을 수정하는 방법을 소개해보려 합니다.
이렇게 잘못 남긴 커밋 메시지가 있을때, 여러분들은 어떻게 메시지를 수정하시나요?
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
로 커밋 메시지를 수정하면 변경된 코드와 커밋 메시지가 이전 커밋에 반영됩니다.
'😾 Git & Github' 카테고리의 다른 글
git reset으로 스테이징과 커밋 되돌리기 (0) | 2021.08.22 |
---|---|
한밤의 리베이스 실패기 (2) | 2021.05.25 |
깃허브 프로젝트에 라이센스 부여하기 (0) | 2021.05.04 |
github api 요청 한도 늘리기 (0) | 2021.02.26 |
좋은 커밋 메시지란 & 커밋 템플릿 만들기 (1) | 2021.02.22 |