우선 준비해놓은 master로 커밋할 수 있는 깃 프로젝트를 MVC로 생성해 놓았습니다.
두 번째 준비물로는 test라는 브런치를 하나 더 만들어
'두 번째 커밋을 했습니다.'
home.jsp의 결과는
Master
<p>첫 번째 커밋</p>
test
<p>첫 번째 커밋</p>
<p>두 번째 커밋(test 브런치)</p>
서로 같은 페이지지만, 간섭이 불가능한 상태입니다.
Master로 돌아와 Merge 시켜보겠습니다.
Merge는 '합병'한다는 뜻인데, test에 커밋된 결과와 합병해보겠습니다.
합병 전
합병 후
Git 홈페이지에는 커밋 기록이 생겨났습니다.
Master
<p>첫 번째 커밋</p>
<p>두 번째 커밋(test 브런치)</p>
test
<p>첫 번째 커밋</p>
<p>두 번째 커밋(test 브런치)</p>
이로써 test 브런치와 동일해졌군요.
이번엔 reset으로 되돌아가는 기능을 써봅시다.
이 상태는 중요한 조건! 이 있습니다.
push를 안한 상태여야만 reset이 가능합니다.
그렇담 커밋만 해놓은 상태는 될까요?
현재
<p>세 번째 커밋(리셋용)</p>
을 추가하여 커밋만 해놓은 상태입니다.
이 상태는 현재
'상단에 물건을 올려놓고 아직 팔리지 않은 상태'로 비유해보겠습니다.
Reset페이지를 키면, 다음과 같은 화면이 구성되는데
Master는 세 번째 커밋용 커밋이 되어있는 상태,
test는 아직 건드린 적이 없으니 두 번째 커밋 상태,
test로 리셋 'Hard'로 시켜보겠습니다.
커밋 기록과 수정했던 페이지 모두 되돌아갔습니다.
그렇담 mixed reset은 어떨까요?
HEAD와 index update만 되돌아 간다고 표기되있습니다.
결과입니다.
아! 여기서 'Hard'로 리셋하는 경우에는 working tree까지 없어진다 하였는데 'Mixed'을 한 경우에는 차이점이 보이십니까?
home.jsp 부분은 초기화되어있지 않고, 커밋한 결과만 되돌아 갔습니다.
즉, working tree는 지금 현재 최근까지 수정하고 있는 상태를 말하게 됩니다.
Soft인 경우는 Head만 없어진다고 되어있지만,
index 즉, working tree와 Head까지 돌아가는 상태 중 가운데 있다고 볼 수 있겠군요.
Working Tree -> index -> Head
Hard : 몽땅 리셋
Mixed : index와 Head 리셋
Soft : Head만 리셋