본문 바로가기

개발 관련/git

되돌리기 - git checkout, git reset, git revert

💡 작업 트리에서 수정한 파일 되돌리기

git checkout -- {수정을 원하는 filename}
  • checkout 명령을 사용하면 작업 트리에서 수정한 내용을 쉽게 취소할 수 있음
  • 즉, 파일의 수정을 취소하고 원래대로 되돌리는 것
  • 다만, checkout으로 되돌린 내용은 다시 복구할 수 없음

💡 스테이징 되돌리기

git reset HEAD {filename}
  • HEAD 다음에 파일 이름을 지정하지 않으면 스테이지에 있는 모든 파일을 되돌림
  • 스테이지에서 내려지면 Unstaged changes after reset라고 뜸

  • 파일이 아직 스테이지에 올라가기 전(not staged)으로 돌아온 것을 확인할 수 있음

💡 최신 커밋 되돌리기

git reset HEAD^
  • 가장 최신, 즉 가장 마지막에 한 커밋을 취소하는 방법
  • HEAD^란 현재 HEAD가 가리키는 브랜치의 최신 커밋을 가리킴

  • 커밋이 취소되고 스테이지에서도 내려졌따는 메시지가 나타남(Unstaged changes)
  • git log 명령어로 로그 확인

git reset --soft HEAD^
  • 최근 커밋을 하기 전 상태로 작업 트리 되돌림

 

git reset --mixed HEAD^
  • 최근 커밋과 스테이징을 하기 전 상태로 작업 트리 되돌림
  • 옵션없이 git reset 명령을 사용했을 때와 같은 결과

 

git reset --hard HEAD^
  • 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 작업 트리를 되돌림
  • 이 옵션으로 되돌린 내용은 복구 불가

💡 특정 커밋으로 되돌리기

git reset --hard {커밋 해시}

# git log
# git reset --hard 0a74384c45c26d7c0c98bfed9608e4c8c934128c
  • 특정 커밋으로 되돌릴 때 사용
  • reset A : 최근 커밋을 A로 리셋(A 커밋을 리셋하는 것이 아님), 즉 A 커밋으로 이동하겠다는 의미
  • git log의 커밋을 copy해서 사용

git reset --hard 전
git reset --hard 후

  • 복사해서 붙인 커밋 해시 위치가 가장 최신 커밋이 된 것을 확인 가능

💡 커밋 삭제하지 않고 되돌리기

git revert {커밋 해시}
  • 커밋을 되돌려도 취소한 커밋을 남길 때 사용
  • 취소할 커밋의 해시가 아닌 되돌아갈 커밋 해시를 지정하는 reset과는 달리 revert는 취소할 커밋 해시를 지정함

지금까지의 내용은 Do it! 지옥에서 온 문서 관리자 깃 & 깃허브 입문의 67페이지에서 82페이지를 읽고 정리한 내용이다.

'개발 관련 > git' 카테고리의 다른 글

브랜치(git branch) - 병합(git merge)  (0) 2021.09.04
브랜치(git branch) - 생성 및 조회  (0) 2021.09.03
커밋한 메시지 수정하기 : --amend  (0) 2021.09.02
git log --stat  (0) 2021.09.02
깃 토큰 인증하기  (0) 2021.08.22