ABOUT ME

Today
Yesterday
Total
  • 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에 대해 알아보자.

    '깃허브' 카테고리의 다른 글

    댓글

Designed by Tistory.