GIT4 - Reset & Revert

git reset --hard vs --mixed vs --soft

수업소개

reset은 head가 가르키는 branch가 가르키는 커밋을 변경하는 작업입니다. 이때 옵션을 --hard, --mixed, --soft 중 무엇으로 주느냐에 따라서 stage, working directory의 상태가 달라집니다. 여기서는 이 옵션들의 미묘한 차이에 대해서 소개합니다. 

 

 

강의 1

 

 

 

강의2

 

 

 

 

댓글미션

reset --hard, --mixed, --soft의 차이를 설명해보고, 언제 쓰면 좋을지도 댓글로 남겨보세요. 

댓글

댓글 본문
  1. 김기크
    reset --hard: repository, staging area, working directory의 모든 내용을 지정한 버전으로 reset한다.
    reset --mixed: default 값. repository, staging area의 내용을 지정한 버전으로 reset한다. 작업한 내용을 다시 수정해서 commit할 때 좋다.
    reset --soft: repository만 지정한 버전으로 reset한다. 지정한 버전에서 다음 버전으로 commit하기 직전 상태로 변경한다고 보면 좋겠다.
  2. 아롱범
    hard의 경우는...
    1. 최근 작업 내용을 전부 버리고 최신 버전의 상태로 초기화시킬 떄,
    2. 프로젝트를 진행하다 앗! 뭔가 새로운 아이디어가 떠올랐어!! 브랜치를 하나 만들어볼까?

    soft 의 경우는...
    hard 옵션의 2번의 경우에서, 최근 작업 내용을 그대로 갖고와서 브랜치를 만들 고 싶을 때

    mixed의 경우는...
    최근 작업 내용을 그대로 가져 왔지만 이걸 적용해야 하나, 말아야 하나 조금 고민이 필요할 때..

    ================================

    써놓고 보니 밑의 폭스킴님과 똑같네요 ㅎㅎ
  3. 폭스킴
    돌아가고 싶은 commit으로 reset할 때,
    --hard: reset하기 전까지 했던 staging area, working directory의 작업까지 모두 reset!
    (모든 게 잘못됐어! 나 돌아갈래~ 꽃피던 때부터 정갈하게 다시 해보자!)
    --mixed(default): staging area은 reset, reset하기 전까지 했던 working directory의 작업은 남겨둠.
    (현재 작업물은 지우긴 싫고, 이전 버전으로 돌아가서 add할지 말지 결정해야 할 때)
    --soft: reset하기 전까지 했던 staging area, working directory의 작업은 남겨둠.
    (reset한 버전과 현재까지의 작업을 합쳐 새로운 버전 만들 때)
버전 관리
egoing
현재 버전
선택 버전
graphittie 자세히 보기