깃허브

Git commit 수정하기

요피짱 2019. 12. 17. 20:37

우리가 가끔 실수로 commit 하는 경우가 있다.

여기서 수정하는 방법을 알아보자.

 

그리고 시작하기 전에 전 게시글에 Git에서는

크게 두가지 상태가 있다고 설명되있다.

Untracked 와 Tracked 파일이다.

여기서 다시 Tracked 는 세 가지 상태로 나뉜다.

 

 

수정한 자신의 파일을 실수로 커밋한다고 치고 번째,

 

먼저 자신이 수정한 파일의 상태를 확인하기 위해,

git status 명령어로 상태를 확인해보자.

Changes not staged for commit 이라고 하면서 (staged 는 이제 commit 할 준비가 되었다는 뜻이다.)

modified : 자신이 수정한 파일명 이라고 붉은 글씨가 출력되는 것을 확인할 수 있다.

(수정된 파일도 add 해줘야 다음 commit 에 반영된다.)

 

 

수정한 파일의 변경점을 파악하기 위해서 번째,

 

우리가 방금 수정한 파일의 내용이 달라진것을 파악하기 위해서 

git에서는 명령어를 만들어놨는데 , 아래와 같다.

명령어 : git diff

명령어를 실행하게 되면 추가된 라인이 +로 표기되어서 나타난다.

만약 터미널에서 보기가 힘들다면 Git GUI를 쓰자.

 

 

아직 수정한 파일을 add 하지 않았다면번째,

 

보통 수정을 잘못해서 파일을 원상태로 되돌리고 싶을 때에 아래의 명령어를 사용한다.

명령어 : git checkout [파일명]

명령어를 실행하고 git diff 로 달라진 내용을 확인해보자.

아무것도 뜨지 않는다. 이것은 바로 직전에 명령어로 파일을 원상태로 되돌렸기에

변경사항이 없다고 뜨는 것 이다.  파일을 직접 확인해봐도 정상적으로 원상태로 돌아간 것을 볼 수 있다.

 

 

수정한 파일을 add까지 했다면 번째,

 

수정한 파일을 add 까지 해서 Staged 상태라면

아래의 명령어로 Staged 상태에서 Modified 상태로 돌아갈 수 있다.

명령어 : git reset [파일명]

명령어를 실행하고 git status 로 상태를 다시 확인하면,

Modified 상태로 돌아간 것을 확인할 수 있다.

그러면 바로 위에서 배운 명령어로 되돌려주자.

명령어 : git checkout [파일명]

 

그리고 commit 을 한 후에 되돌릴 때도 git reset 명령어가 사용되는데,

명령어는 아래와 같다.

명령어 : git reset HEAD~1  (~1은 commit 1개 전으로 되돌아가라는 뜻이다.)

(기본적으로 mixed 적용된다.)

 

--soft , --mixed , --hard 옵션이 있다.

--soft 는 파일들을 commit 후의 Unmodified 에서 commit 직전의 Stage 상태로 만들고,

--mixed 는 Unmodified 에서 이전 commit 의 Modified 상태로 돌아간다.

--hard 는 Unmodified 에서 commit 전에 Unmodified 로 만들어준다. 즉 다 날려버린다고 보면 된다.

 

 

서버에 push 까지 해버린 경우 다섯번째,

 

일단 commit 을 한 후에 아래의 명령어를 실행하자.

명령어 : git revert HEAD

현재 HEAD를 취소하고 이전 HEAD로 돌아간다는 뜻인데,

명령어를 실행하면 Revert 에 대한 메세지를 수정할 수 있다.

메세지를 원하는대로 바꾸고 :wq 를 쳐주자.

reset 와 revert 의 차이점은 , reset 은 이전 commit 으로 직접 되돌아갔다면.

revert 는 현재 commit 위에 이전 commit 를 덮어 씌웠기 때문에

git log 로 확인해보면 새로운 commit 가 추가된 것을 볼 수 있다.

 

 

다음 게시글엔 branch에 대해 알아보자.