Git Branch 학습/연습하기 좋은 사이트
HEAD
는 현재 브랜치 작업 트리의 가장 최근 커밋을 가리킨다(현재 작업중인 커밋).
HEAD
를 브랜치 대신 커밋에 붙이는 것을 HEAD 분리
라고 부른다.
^
(캐럿) 연산자는 상대참조 기능으로, 한 단계 위(부모) 커밋으로 이동할 때 사용한다.
$ git checkout bugFix^ # bugFix 커밋의 부모로 이동(HEAD 분리)
$ git checkout HEAD^ # 현재 커밋의 부모로 이동(HEAD 분리)
^^
를 두 번 쓰면 “조부모(부모의 부모)” 커밋으로 이동한다.
여러 커밋 위로 이동할 땐 ~<num>
물결표(틸트) 연산자를 이용한다. ex) HEAD~3
^
~
같은 상대 참조는 -f
옵션을 이용해 브랜치를 특정 커밋으로 (강제)재지정할 때 유용하다.
$ git branch -f bugFix HEAD~3 # bugFix 브랜치를 3번 뒤의 커밋으로 재지정
git reset
은 ➊혼자 사용하는 브랜치나 ➋origin
에 있지만 아무도 이 브랜치를 사용하지 않는 확신이 있을 때 사용한다. 다른 사람과 함께 작업하는 브랜치에서 reset
을 사용하면 헬게이트가 열릴 수도 있다.
아래처럼 총 3번의 커밋을 했다고 가정해보자.
console.log('commit1'); // 첫번째 커밋
console.log('commit2'); // 두번째 커밋
console.log('commit3'); // 세번째 커밋
$ git log --oneline
# 74d1dc1 (HEAD -> master) commit 3
# 0057e3f commit 2
# fa3e214 commit 1