커밋을 변경 및 수정하는 방법
Updated:
커밋을 변경/수정하는 방법
-
git에 작업된 내용을 저장소에 업데이트하기 위한 과정 중 하나로, 커밋(commit)을 수행한다. 이는 리모트 저장소에 올리기 위한 push 이전의 작업으로 커밋을 할 때 보통 진행한 작업 내용에 대한 간단한 메시지 형태로 함께 작성하게 된다.
-
그러나 commit 메시지를 잘못 작성했거나 수정해야하는 경우, 즉 이미 커밋한 메시지를 다시 수정해야 하는 경우가 있다.
Commit 메시지의 중요성
- 커밋을 하는 경우에는 간단하게 내가 변경한 내용, 추가한 내용을 같이 입력하게 된다. 보통 수정된 내용을 간략하게 요약하며 한 줄에서 두세줄 씩 입력하는 경우도 있다.
- 이렇게 작성한 commit 메시지는 후에 예상치 못한 이슈가 발생하거나 이슈를 트래킹할 때 history를 다시 확인하게 되는 경우가 있기 때문에 매우 중요하다.
- History의 내가 작성한 commit 메시지들을 보며 내가 무슨 작업을 했구나라고 알 수 있지만, 만약 commit 메시지를 전혀 다른 내용으로 실수로 작성하거나 잘못 쓴 경우, 이 메시지를 수정할 필요가 있다. 또한, 이미 커밋한 프로젝트 이외에도 다른 내용도 같이 commit해야 되는 경우도 있다.
Commit 수정하기
마지막 커밋 메시지 바꾸기
-
git commit --amend
을 이용하여 마지막 커밋 메시지를 바꿀 수 있다. -
$ git commit --amend
- 위의 명령어를 실행하면 자동으로 텍스트 편집기를 실행하고 마지막 커밋을 불러온다.
- 그 상태에서 commit 메시지를 수정하면 된다.
마지막 커밋에 수정한 프로젝트 내용 추가하기
-
$ git add [파일이름] $ git commit --amend
- 파일을 수정하고,
git add
명령으로 Staging Area에 넣는다. - 그리고,
git commit --amend
명령으로 커밋을 하면 커밋 자체가 수정되면서 추가로 수정사항을 밀어넣을 수 있다.
⚠︎ 주의할 점: 이미 Push 한 커밋은 수정할 수 없다.
커밋을 고치는 내용이 사소한 경우 (예. 오타)
-
$ git commit --amend --no-edit
-
오타를 살짝 고치거나 사소한 단어를 빠뜨린 경우, 위의 명령어를 실행한다.
- 위 명령어의 경우 편집기가 실행되지 않고, 바로 커밋 메시지를 수정할 수 있다.
커밋 메시지를 여러개 수정하기
-
가장 최근 커밋이 아닌 그 이전의 커밋을 수정하기 위해서는 다른 도구가 필요합니다.
-
이 때는
rebase
명령어를 이용하여 수정합니다. -
$ git rebase -i
- -i라는 옵션을 추가하면 대화형 모드로 Rebase할 수 있다.
- 어떤 시점부터 rebase할 것인지 인자로 넘기면 된다.
-
예시: 마지막 커밋 메시지 세 걔를 모두 수정한다
-
$ git rebase -i HEAD-3
-
위 명령은 HEAD~3 …HEAD 범위에 있는 모든 커밋을 수정한다.
- ⚠︎다만, 이미 중앙서버에 push한 커밋은 절대 고치지 말아야 한다.
-
-
rebase
명령어를 실행하면, Git은 수정하려는 커밋 목록이 첨부된 스크립트를 텍스트 편집기로 열어준다.-
pick f7f3f6d Update name pick 310154e Update README.md pick a5f4a0d Add input.txt # Rebase 710f0f8..a5f4a0d onto 710f0f8 # # Commands: # p, pick = use commit # r, reword = use commit, but edit the commit message # e, edit = use commit, but stop for amending # s, squash = use commit, but meld into previous commit # f, fixup = like "squash", but discard this commit's log message # x, exec = run command (the rest of the line) using shell # # These lines can be re-ordered; they are executed from top to bottom. # # If you remove a line here THAT COMMIT WILL BE LOST. # # However, if you remove everything, the rebase will be aborted. # # Note that empty commits are commented out
- 이때, 제일 위에 있는 커밋은 가장 오래된 커밋이다.
-
-
pick
이라는 단어를edit
로 수정하면 그 커밋에서 멈춘다.-
edit f7f3f6d Update name pick 310154e Update README.md pick a5f4a0d Add input.txt
-
-
위 내용을 저장하고 편집기를 종료하면, Git은 목록에 있는 커밋 중에 가장 오래된 커밋으로 이동하고, 아래와 같은 메시지를 보여주고, 명령 프롬프트를 보여준다.
-
$ git rebase -i HEAD~3 Stopped at f7f3f6d... Update name You can amend the commit now, with git commit --amend Once you’re satisfied with your changes, run git rebase --continue
-
-
git commit --amend
로 커밋 메시지를 수정하고, 텍스트 편집기를 종료한다. - 그 이후 더 수정할 것이 있다면,
git rebase --continue
를 이용해 나머지 2개의 커밋에 적용할 수 있다.
Leave a comment