프로그래머로부터 배우는 코딩의 기술

코스 전체목록

닫기

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

댓글

댓글 본문
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기