본문 바로가기
etc

git - 되돌리기

by 스르나 2020. 7. 8.

git 되돌리기

 

우리가 작업을하다 방금 수정한 코드때문에 프로젝트가 제대로 실행이 안되거나 기대한대로 작동을 안할때 오류가있는 부분을 수정해서 고칠 수 있지만 수정한 내용이 많고 어디가 문제인지 모를때 가끔은 수정하기 전으로 되돌리는 것을 원할때가 있다. 이럴때 우리가 프로젝트를 깃으로 관리를 하고있다면 명령어 한줄로 손쉽게 되돌릴 수 있다.

 

git checkout -- 파일이름 : 방금 수정한 내용 바꾸기

git checkout -- 파일이름은 깃 저장소에서 수정을 한 뒤 add명령어로 스테이징하기전 단계라면 수정전으로 바꿀 수 있는 명령어다.

 

이번에도 깃 저장소에서 텍스트파일로 해보겠다.

 

 

바탕화면에 vv라는 폴더를 만들고 깃저장소로 만든뒤 test.txt라는 파일에 hello world!를 쳤다.

 

그다음 위 내용을 커밋했다.

 

이제 test.txt파일을 수정해보자 hello world!!! 로 느낌표를 2개 추가한다.

 

그다음 git status로 해당 파일이 변경된어 추적되고 있음을 알 수 있다.

 

이제 git  checkout -- 파일이름으로 수정하기전 내용으로 되돌려본다.

 

 

보다싶이 수정하기 전으로(한번 커밋된 내용)으로 돌아가서 git status로 확인하면 워킹 트리 클린이 나온다.

 

 

git reset HEAD 파일이름: 스테이징된 파일 되돌리기

 

이번에는 파일을 수정하고 스테이지에 올린파일을 되돌려본다.

 

다시 test.txt파일에 느낌표를 2개 추가한뒤 add명령어로 스테이징을 했다.

 

이제 이 스테이징 된것을을 되돌려보자

 

보다싶이 변경된 내용은 그대로이지만 git status로보면 스테이징에서 빠진것을 알 수 있다.

 

git reset HEAD^: 최신 커밋 되돌리기

 

이번에는 방금 커밋한 내용을 되돌려보자

 

위 화면은 파일 내용을 바꾸고 커밋까지 한뒤 깃 로그를 띄운것이다. 보다싶이 마지막 커밋 메세지는 숫자 2이다.

 

이걸 되돌리보자

 

위와같이 보면 최신 로그였던게 사라졌다. 하지만 파일 내용을 그대로이다.

 

만약 reset명령어를 커밋된 내용을 되돌리기할때 한번에 수정전까지 되돌리거나, 스테이징된 상태로 되돌리고 싶으면 아래를 참고하자

 

  • git reset --soft HEAD^ : 스테이징된 상태로 되돌리기
  • git reset --mixed HEAD^ : 커밋과 스테이징을 모두 취소, 파일변경 내용은 유지 (Defalut)
  • git reset --hard HEAD^ : 커밋과 스테이징, 파일변경 내용까지 모두 되돌리기