IT knowledge

git stage 수정 및 commit message 수정하기

정글탐험 2021. 1. 21. 01:41
반응형

git 사용하다가 마주치는 실수들.

git을 사용하다 보면 가끔씩 너무 급하게 stage에 올려버리거나 commit을 했는데 commit의 내용을 변경하거나 commit message 변경을 하고 싶은 경우가 있죠? 이럴 때 손쉽게 되돌리는 방법 정리해보겠습니다.

 

 

stage에 실수로 올렸을 때

vim에서 fugitive를 사용하는 경우에 git의 상태를 보려면 :G 명령어로 보는데요, 가끔 손이 저절로 움직여서 아직 stage에 올리고 싶지 않은 파일을 다 올려버리는 경우가 있습니다. 아니면 git add . 명령을 습관처럼 입력한다든지...

이런 경우죠....

stage에 모든 파일이 올라간 상황
stage에 두 파일 다 올린 상황

실수로 원하지 않는 stage 상태를 만든 경우에는 아래와 같은 명령어로 수정할 수 있습니다.

이렇게 취소를 하면 다시 untracked로 돌아가 있는 걸 확인할 수 있습니다.

한개의 파일만 stage에서 제거한 상태
한개의 파일만 stage에서 제거를 완료한 모습 (한 파일만 stage 취소 된 모습)

 

commit message를 수정하고 싶을 때

commit은 수정하고 싶은 경우가 주로 2가지 경우인데요, commit 하고 싶지 않은 파일을 포함해버려서 취소하고 싶을 때와 commit message를 제대로 적지 않아서 수정하고 싶은 경우일 거라고 생각합니다. 

commit message를 수정하고 싶은 경우는 간단합니다. 아래 사진을 보면 this is second commit이라고 적고 싶었는데 실수를 했습니다.

commit message가 잘못 된 상태
commit message가 잘못됬습니다.

 

이걸 commit message를 수정하려면 아래의 명령어를 입력하고 enter!

git commit --amend 

amend 명령어 입력
amend 명령어를 입력하고 enter!

그럼 이렇게 수정하는 화면이 나오고, 여기서 commit message를 원하는 대로 수정하고 저장하고 나가면 바로 commit message에 적용이 됩니다.

메시지 수정하는 장면
메시지 수정하는 화면

git log 명령어로 변경된 commit message를 확인할 수 있고 확인 결과 잘 수정이 되어 있습니다.

수정이 완료 된 모습
수정이 완료 된 모습

 

그럼 요번엔 바로 직전 commit이 아닌 더 오래된 commit의 message를 수정해보겠습니다.

현재 commit 하나를 추가하여 third commit인 상태인데 여기서 second commit message 이걸 수정해보겠습니다. 

commit이 3개가 있는 상태
commit이 3개가 있는 상태

아래의 명령어를 입력합니다.

git rebase -i HEAD~~

수정할 수있는 commit들이 보이는 상태
수정할 수 있는 commit들

변경하고 싶은 commit의 pick을 edit로 바꾸고 저장, 종료합니다.

수정한 상태

pick을 edit로 바꾸고 나오면 아래와 같은 화면을 보게 됩니다.

second commit에 checkout한 상태
second commit에 checkout한 상태

 

 

 

git commit --amend 명령어로 commit message 수정하는 화면으로 들어갑니다.

들어가서 전에 했던 방식으로 commit message를 수정, 저장, 종료합니다.

commit message 수정 직후 모습
commit message 수정 직후 모습

이제 다음 명령어 commit message 변경을 완료합니다.

git rebase --continue

rebase 까지 완료 된 모습
rebase 까지 완료 된 모습

git log를 통해서 변경이 완료된 걸 알 수 있습니다.

rebase 완료 후 git log
rebase 완료 후 git log

rebase는 merge와 같이 병합할 때 쓰는 걸로 알고 있었는데 이렇게 commit message 바꾸는 방법으로도 사용할 수 있었습니다.

 

정리

git stage에 올린 거를 취소하고 싶으면 

git reset {file_name}      // file 하나 취소

git reset                        // stage전체 취소

 

git reset HEAD {file_name} //file 하나 취소

git reset HEAD                   // stage 전체 취소

 

git 바로 직전 commit message 수정

git commit --amend

 

git 좀 더 오래된 commit message 수정

git rebase -i HEAD ~~

pick -> edit로 수정 후 저장, 종료

git commit --amend

git rebase --continue

 

 

stage에 올리는 명령어

git add {file_name} 

git add .

 

commit message와 commit 하는 명령어

git commit -m "commit message"

 

요번 포스트는 여기서 마무리하겠습니다.


공감 눌러주시면 안 그래도 행복한 하루가 더 행복한 하루가 됩니다!

구독하기 눌러주시면 제 글이 발행되면 더 빨리 보실 보실 수 있어요~!

그럼 오늘도 감사합니다!

By 정글탐험


 

<이런 글들은 어떠신가요?>

2021/01/19 - [리뷰] - vim 에디터 기본적인 리뷰

 

vim 에디터 기본적인 리뷰

vim 오늘은 text editor들 중에 vim이라는 에디터를 리뷰해보고 관심 있는 분들은 사용해 보시길 바라며 기본적인 vim screencast를 첨부하겠습니다. 텍스트 기반의 텍스트 에디터로 마우스 없이 키보드

infinity-challenge.tistory.com

2021/01/20 - [리뷰] - 해피해킹 프로 하이브리드 개발자 키보드 끝판왕

 

해피해킹 프로 하이브리드 개발자 키보드 끝판왕

해피해킹 Happy Hacking Keyborad 오늘은 개발자 키보드로 잘 알려진 해피해킹 키보드에 대해서 리뷰글을 간단하게 써보려 합니다. 물론 개발자가 아닌 분들도 글을 많이 써야 하는 분들이라면 해피해

infinity-challenge.tistory.com

 

반응형