본문 바로가기
Programming

Git Commit 내용을 수정하는 방법

by 느리게 걷는 즐거움 2024. 12. 11.
반응형

 

Git을 사용하다 보면 이전에 커밋한 내용을 수정하고 싶을 때가 있습니다. 예를 들어, 실수로 잘못된 내용을 커밋했거나, 커밋 메시지가 부적절했을 경우 등이 있을 수 있습니다. Git에서는 여러 가지 방법으로 커밋을 수정할 수 있습니다. 이번 글에서는 git commit 내용을 수정하는 다양한 방법을 소개하겠습니다.

 

1. 최근 커밋 메시지 수정하기

가장 최근에 했던 커밋 메시지를 수정하려면 --amend 옵션을 사용합니다. 이를 통해 메시지만 수정할 수 있습니다.

방법
  1. git commit --amend 명령어를 입력합니다.
  2. 기본적으로 텍스트 에디터가 열리며, 커밋 메시지를 수정할 수 있습니다.
  3. 수정 후 저장하고 종료하면, 커밋 메시지가 수정됩니다.
git commit --amend
 

예시

$ git commit --amend # 에디터에서 메시지를 수정한 후 저장하고 종료
 

이 방법은 가장 최근 커밋의 메시지만 수정하는 방법입니다. 커밋 내용 자체를 수정하려면, 다음 방법을 사용해야 합니다.

 

2. 최근 커밋 내용 수정하기 (파일 수정 포함)

 

만약 최근 커밋에서 변경된 파일을 수정한 후 커밋 내용 자체를 바꾸고 싶다면, git commit --amend 명령어를 사용하여 파일을 수정한 후 다시 커밋할 수 있습니다.

방법
  1. 파일을 수정한 후 git add 명령어로 수정된 파일을 스테이지에 올립니다.
  2. git commit --amend 명령어를 입력하여 커밋을 수정합니다.
  3. 텍스트 에디터에서 메시지를 수정하고 저장 후 종료합니다.
git add <수정한 파일> git commit --amend

예시

$ git add index.html $ git commit --amend # 메시지를 수정한 후 저장하고 종료
 

이렇게 하면, 파일 내용과 커밋 메시지 모두 수정한 새로운 커밋이 생성됩니다.

 

3. 이전 커밋 수정하기

 

특정 커밋을 수정하고 싶다면 rebase 명령어를 사용해야 합니다. git rebase -i 명령어를 이용하면, 커밋을 선택하여 수정할 수 있습니다.

방법
  1. git rebase -i HEAD~n 명령어로 수정하고 싶은 커밋을 선택합니다. 여기서 n은 수정하려는 커밋 수입니다. 예를 들어, HEAD~3은 최근 3개의 커밋을 의미합니다.
  2. 에디터에서 수정하고 싶은 커밋을 edit으로 변경합니다.
  3. 커밋을 수정한 후, git commit --amend 명령어로 수정합니다.
  4. 변경을 완료한 후 git rebase --continue 명령어를 사용해 리베이스를 종료합니다.
git rebase -i HEAD~3
 

예시

$ git rebase -i HEAD~3 

# 에디터에서 'pick'을 'edit'으로 바꾼 후 저장하고 종료 
# 커밋을 수정하고, 수정 후 `git commit --amend` 
$ git commit --amend 

$ git rebase --continue
 

이 방법을 사용하면 과거의 특정 커밋을 수정할 수 있습니다. 이때, 커밋 해시가 변경되므로 이미 원격 저장소에 푸시된 커밋을 수정할 경우, 푸시 후 강제로 푸시해야 할 수도 있습니다.

 

4. 커밋 수정 후 강제 푸시하기

 

만약 이미 커밋을 원격 저장소에 푸시한 후 수정했다면, 강제 푸시를 해야 합니다. git push --force 명령어를 사용하여 수정된 커밋을 원격 저장소에 덮어쓸 수 있습니다.

git push --force
주의사항
  • 강제 푸시를 사용하면 원격 저장소에 있는 커밋 히스토리가 변경됩니다. 따라서 협업 중인 다른 사람들에게 영향을 줄 수 있으므로 신중하게 사용해야 합니다.
  • 협업 시, git push --force-with-lease 명령어를 사용하면 다른 사람의 변경 사항이 덮어쓰여지는 것을 방지할 수 있습니다.
git push --force-with-lease
 

 

5. 커밋 내용 삭제하기 (커밋 취소)

 

커밋을 아예 삭제하고 싶을 때는 git reset 명령어를 사용하여 해당 커밋을 되돌릴 수 있습니다. git reset --soft HEAD~1 명령어를 사용하면, 가장 최근 커밋을 취소하면서 변경 사항은 워킹 디렉토리와 스테이지에 남게 됩니다.

git reset --soft HEAD~1

예시

$ git reset --soft HEAD~1
 

이 명령어는 커밋을 삭제하지만, 변경된 파일은 스테이지에 남겨두므로 다시 커밋하거나 수정할 수 있습니다.

 

반응형