본문 바로가기

Git

[Git] Reset vs Checkout

반응형

결론부터 말하자면

reset은 브랜치의 이동이고 checkout은 해드의 이동입니다.

[1] reset

reset은 브랜치의 이동입니다. 브랜치가 이동하면서 HEAD도 같이 이동하게 됩니다. 총 네 개의 커밋을 한 상황이라고 가정하겠습니다.

 

 

여기서 reset --[옵션] 해쉬아이디 명령어를 통해 이전 커밋으로 돌아갈 수 있습니다. ec3b로 돌아가면 아래와 같이 되겠죠.

 

 

reset은 이게 끝입니다. 별거 없죠.. reset은 세 가지 옵션을 잘 이해하시는게 중요합니다. 참고로 reset을 한다고 이후의 커밋이 다 지워지지는 않습니다. 이전 커밋으로 리셋한 뒤에 이후 커밋으로 다시 리셋할 수 있습니다. 위 사진의 경우 asd8 커밋으로 다시 돌아갈 수 있습니다. 커밋 이력을 보고싶으면 ' git reflog ' 명령어를 치면 됩니다.

[2] checkout

checkout은 해드의 이동입니다. 해드만 이동시킬 수 있다면 아래 그림처럼 해드가 직접적으로 커밋을 가리키게 하는 것도 가능하겠죠?

 

 

이렇게 하면 분기의 기준점이 되는 커밋을 정할 수 있습니다. 자신이 원하는 커밋에 해드를 이동시키고 새로운 브랜치를 생성한 뒤에 커밋을 하면 분기되겠죠? 새로운 브랜치를 생성하면 해드가 가리키던 커밋에 브랜치가 생성됩니다. 즉, 위 사진과 같은 상태에서 ' git branch highlevel ' 명령어를 입력하면 아래와 같이 됩니다.

 

checkout은 해드의 이동이기 때문에 브랜치를 가리키도록 설정할 수도 있습니다. 하지만 이는 이미 전에 다뤘었습니다. 브랜치 이동 명령어가 ' git checkout ~' 였죠? 해드가 highlevel 브랜치를 가리키도록 하고 커밋을 진행하면 아래와 같이 됩니다.

반응형

'Git' 카테고리의 다른 글

[Git] git pull시 주의점  (0) 2022.01.14
[Git] merge 완전정복  (0) 2022.01.14
[Git] HEAD와 branch의 관계  (0) 2022.01.14
[Git] Remote repository의 브랜치  (0) 2022.01.14
[Git] branch merge 해보기  (0) 2022.01.14