GIT

console(복원)

  working directory staging area repository
directory
기타
파일에 대한 작업
checkout -- 파일 취소 유지 유지  
checkout HEAD 파일 취소 취소 유지  
reset -- 파일 유지 취소 유지  
전체에 대한 작업
reset commit id 유지 취소 commit id 이후의
커밋 취소
commit id에
해당하는 커밋은 유지된다.
reset HEAD^ 유지 취소 최신 커밋-1로
리셋
커밋은 했지만 push하지 않은 경우 유용
HEAD^는 최신커밋을 포함
두개의 커밋을 의미
reset HEAD~2 유지 취소 최근 커밋 -3번째
 커밋으로 리셋
 
reset --hard HEAD~2 취소 취소 최근 커밋 -3개
커밋으로 리셋
-- hard는 working과 staging 모두 취소
reset --soft HEAD~2 유지 유지 최근 커밋 2개 취소 --soft는 working과 staging 모두 유지
reset --hard ORIG_HEAD     병합한 커밋을 취소 ORIG_HEAD는 위험한 작업에 대한 
포인터로 push나 merge가 여기에 해당됨
revert HEAD 거부 거부 최신 커밋 취소 커밋을 이미 push한 경우
reset --hard HEAD 취소 취소 유지 신규파일에 영향없음
checkout HEAD 취소 취소 유지 신규파일에 영향없음
checkout -f 취소 취소 유지 신규파일에 영향없음
clean -f -d untracked
파일제거
(디렉토리포함)
유지 유지  

이 표는 에코지오님의 글을 참고로해서 작성되었습니다.

reset의 옵션

  • --soft : staging area(index) 보존, working directory 보존. 즉 모두 보존.
  • --mixed : staging area 취소, working directory 보존 (기본 옵션)
  • --hard : staging area 취소, working directory 취소. 즉 모두 취소.

reset과 revert의 차이점

reset은 해당 커밋의 상태로 되돌리는 명령이다. 그렇기 때문에 reset 뒤에 커밋 아이디를 지정하면 해당 커밋이 취소되는 것이 아니라, 해당 커밋 이후의 변경점이 취소되는 것이다. revert는 선택한 커밋이 취소되는 것이 아니라, 해당 커밋을 취소하는 커밋이 추가되는 것이다. 

다른 브랜치를 잘못 merge 했을 때의 조치

만약 master 브랜치에 wrong라는 이름의 브랜치를 실수로 merge 했다면 아래와 같은 명령으로 master 브랜치를 원격 저장소 (origin master)와 동일한 상태로 전환 할 수 있다.

git reset —hard origin/master

댓글

댓글 본문
  1. 용유
    넵. 뒤에 수업도 잘 들을게요. (회원가입전 용유가 저임)
    대화보기
    • egoing
      말씀하신 것이 맞네요. 해당 부분을 제거 했습니다. 고맙습니다.
      대화보기
      • 용유
        잘듣고 있어요. 위에 오타인가요?
        (예를들면 어떤 파일을 추가한 후에 해당 파일에 대해서 reset을 시도하면 그 커밋 자체가 취소되는 것이 아니라 해당 파일이 삭제되는 커밋이 추가되는 것이다) 이부분에 reset이 아니라 revert가 아닌지? 제가 잘못이해했나요?