수정 작업도 다했고,
수정한 파일도 스테이징에 올리고,
커밋 메세지도 정성스럽게 작성해서 커밋을 만들었다.
...그런데 작업한 파일을 하나 빼먹었다면?😱
amend
옵션을 사용하자.
$ git commit --amend
일단 기본적으로 amend
옵션은 마지막 커밋의 메세지를 다시 수정할 수 있다.
명령어를 실행하면 마지막 커밋이 불러와지는데 메세지를 고치고 다시 저장하면 커밋을 수정할 수 있다.
amend
옵션의 강력함은 메세지보다 파일을 다시 수정할 수 있는 점이라고 할 수 있다.
커밋에 들어갈 파일을 하나 빼먹었다거나, 내용 수정이 필요할 때 amend
옵션을 쓰면 추가 커밋을 만들지 않고 지금 커밋을 다시 수정할 수 있다.
간단히 방법을 알아보자.
다시 수정하고 싶은 파일을 수정한다.
이미 커밋에 들어간 파일이라도 상관없다.
파일을 빼먹은 경우면 수정할 것은 없겠다.
수정한 파일을 staging area에 추가한다.
$ git add <filename>
커밋에 추가하거나 수정할 파일들을 전부 스테이징에 올리자.
add
한 이후 amend
옵션을 사용한다.
$ git commit --amend
마지막 커밋이 다시 편집창으로 열린다.
지금 상태가 2번에서 추가한 내용들이 반영된 상태다.
메세지도 수정할려면 수정하고 저장한다.
여기까지 진행하면 커밋을 고칠 수 있다.
그리고 만약 amend
할 파일이 git이 추적중인 파일이라면 staging 추가 없이 바로 amend
할 때 포함시킬 수 있다.
파일이 여러개면 공백으로 구분하면 된다.
$ git commit --amend <file1> <file2>
하지만 새로 만든 파일처럼 git에서 추적하지 않는 파일이라면 바로는 안되는 것 같다.
이 경우에는 add
부터 하고 amend
를 하자.
amend
는 아직 push
를 하지 않았을 때만 사용할 수 있다.
원격 저장소에 반영이 끝났다면 amend
해서는 안된다.
이미 늦었으니 새 커밋이나 만들자.
항상 원격에 반영하기 전에 커밋 내용을 한번만 훑어보도록 하자.
amend
는 커밋하고 난 뒤, 같은 커밋을 다시 수정하고 싶을 때 유용한 commit
명령어 옵션이다.
커밋 만들 때 실수한 부분을 발견한다면 amend
를 사용해서 다시 고치도록 하자.
그리고 amend
는 rebase
명령과 함께 사용해 과거 커밋내용을 고칠 수도 있다.