[Git] amend: 수정 못한 파일을 방금 만든 커밋에 추가

2022. 4. 21. 12:00Git

예를 들어 개발을 하고 커밋을 하나 생성하였는데, 추가할 파일이나 수정해야 되는 부분을 발견하였습니다. 그렇다면 커밋을 또하나 수정하는 대신에 최근에 생성한 커밋을 정정하는것이 더 깔끔합니다. 이렇게 마지막 커밋을 수정하는 기능이 amend 기능입니다.

 

0. 사전준비

0.1 iTshirt-cat/ch05_git-playground 폴더 생성

ch-5_git-palyground 폴더에서 실습합니다.

 

1. amend로 마지막 커밋 수정하기

1.1 amend.md 파일 생성 및 작성

1.2 amend.md 파일을 커밋합니다. (푸시는 하지 않습니다.)

 

1.3 그런데 커밋을 하고 나니까 amend.md 파일의 내용이 '어맨드 실습하기'가 아닌 'amend 실습하기'라는 것을 뒤늦게 알았다고 가정합니다. 이때 정정 커밋을 새로 만들지 않고 방금 올린 커밋을 수정하였으면 좋겠다고 생각합니다.

일단 amend.md 파일에 원하는대로 '어맨드'를 'amend'로 바꾸고 저장합니다.

1.4 소스트리에서 변경사항을 스테이지 올립니다.

 

1.5 스테이지에 올린 파일들을 바로 커밋을 누르지 않고 [커밋 옵션] -> [마지막 커밋 정정] 버튼을 클릭 -> 예 -> 커밋 버튼 클릭

위 커밋 결과를 보면 추가적인 정정 커밋을 생성하지 않고 마지막에 생성한 커밋이 수정된 것을 볼 수 있습니다.

 

2. amend로 마지막 커밋 메시지를 수정하고 원격 저장소 브랜치에 강제 푸시하기

1장에서는 로컬 저장소에만 올린 커밋을 정정하였습니다. 이번에는 이미 원격 저장소에 푸시한 커밋을 amend로 수정하고 원격저장소에 다시 반영하는 실습을 하겠습니다.

 

2.1 amend.md 파일 수정

2.2 amend.md 파일을 커밋 및 원격저장소에 푸시

위 결과를 보면 amend.md 파일을 작성해서 커밋 및 원격저장소에 푸시한것을 볼 수 있습니다.

 

2.3 이미 푸시한 커밋을 수정하도록 하겠습니다. amend.md 파일을 다음과 같이 수정합니다.

2.4 amend.md 파일을 스테이지 올림

2.5 amend.md 파일을 스테이지에 올린뒤 [커밋 옵션] -> [마지막 커밋 정정] 체크 -> 이미 올라간 커밋 메시지가 출력되면 커밋 메시지를 수정 -> 커밋

 

2.6 커밋을 하게 되면 다음과 같이 나옵니다.

 

2.7 원격저장소의 'amend.md 실습 파일 추가' 커밋을 정정하기 위해 현재 로컬 저장소의 'amend.md 실습 파일 수정' 커밋을 강제 푸시합니다. [push] -> [강제 푸시 체크] -> push 버튼 클릭

위 결과를 보면 추가적인 정정 커밋을 생성하지 않고 이미 푸시한 원격저장소의 커밋의 내용과 메시지를 수정한 것을 볼 수 있습니다.

 

References

source code : https://github.com/yonghwankim-dev/git_study
팀 개발을 위한 Git Github 시작하기, 정호영 진유림 저