git add 하지 않은 working tree에 있는 수정된 파일 되돌리기
git checkout -- 파일명
주의할점 : checkout을 하여 되돌린 내용은 다시 복구되지 않아요 ㅠ
git add 되어 스테이지에 올라간(스테이징된) 파일을 되돌리기
git reset HEAD
git reset HEAD 파일명
HEAD 뒤에 파일명을 지정해주지 않으면 현재 스테이지에 올라가있는 파일 모두를 되돌린다. add하기 전 상태로 돌려준다.
최신 커밋 되돌리기
git reset HEAD^ # 최근 커밋 하나 되돌림
git reset HEAD~3 # 최근 3개 커밋 취소
스테이징과 커밋이 끝난 상태를 커밋을 취소하고 unstage 해준다.
git reset 옵션
--soft HEAD^ # 최근 커밋을 하기 전 상태로 working tree를 되돌림
--mixed HEAD^ # 최근 커밋과 스테이징을 하기 전 상태로 working tree를 되돌림
# 옵션없이 git reset 명령만 사용할 때 이 옵션이 기본
--hard HEAD^ # 최근 커밋과 스테이징, 파일 수정을 하기 전 상태로 working tree를 되돌림
# 이 옵션을 사용하면 되돌린 내용은 복구 불가
commit hash를 사용한 reset
커밋 해쉬또는 커밋 id라고 부른다.
commit옆에 문자와 숫자가 섞인 hash값을 우리는 commit hash라고 부른다. 이를 사용하여 reset를 진행할 수 있다.
예를 들어, commit 버전이 현재 커밋한 시간 순으로 c1, c2, c3, c4가 있다고 가정해보자.
git reset --hard c2의 커밋 해시
hard 뒤에 특정 버전의 커밋 해시를 입력하면 그 버전으로 돌아가고 그 이후의 버전은 모두 삭제가 된다.
c2의 커밋 해시를 입력했다면 버전은 c2의 버전으로 돌아가고 c3, c4는 모두 삭제된다.(복구 불가)
만약 버전을 삭제하고 싶지 않다면 revert 명령어를 사용한다.
git revert 커밋해시
반응형
'Git' 카테고리의 다른 글
협업을 위한 Git Fork와 PR (0) | 2021.07.05 |
---|