[Git] Git 심화개념(HEAD, fetch VS pull)

WOOK JONG KIM·2022년 12월 21일
0

Git&GitHub

목록 보기
10/19
post-thumbnail

Git에서 HEAD란 현재 속한 브랜치의 가장 최신 커밋
-> 각 가지의 맨 끝단
-> switch로 branch를 바꿀때마다 각 branch의 HEAD에 위치하게 됨

checkout으로 커밋 앞뒤로 이동하기

git checkout HEAD^

reset, revert와 다르게 commit을 건드리지 않고 과거 시점으로 가는 것!

delta 1st commit으로 switch 하였지만 왜 SourceTree에서는 가장 최신 커밋이 아닌데 HEAD로 표시할까
-> 새로 익명의 브랜치를 만들어 와있음을 유추할 수 있음

여기서 다시 delta-branch의 끝단으로 갈려면 switch를 사용해야 함

브랜치의 특정 커밋 지점으로 와서 분기를 하고싶은 경우

git switch -c gamma-branch

변경 사항 만든 후 commit 햇을 때

beta-branch에서 gamma-branch가 분기한것을 볼 수 있다

Head 를 사용하여 Reset

해시 코드 알아올 필요 X

git reset HEAD(원하는 단계) (옵션)

예를 들어 delta-branch 에서 두단계를 리턴하고 싶은 경우

git reset --hard HEAD~2

두 단계가 사라진것을 볼 수 있음


fetch와 pull의 차이

fetch: 원격 저장소의 최신 커밋을 로컬로 가져오기만 함
pull: 원격 저장소의 최신 커밋을 로컬로 가져와 merge 또는 rebase

fetch는 일종의 가상에 브랜치를 추가(변화들을 다 받아옴)
-> 그러나 pull때 처럼 merge나 rebase 하진 않음
-> pull의 과정에 fetch가 포함되어 있는 것
-> fetch는 보통 내용을 살펴보고 싶은 경우 사용

원격 저장소에서 변경사항을 만든 후, fetch를 하였을 때 커밋이 추가되었다고 표시 됨

-> 물론 이 경우 변경 사항은 반영이 안됨

이후 git checkout origin/main할 시 변경 내용이 반영되어있음
-> 하지만 이를 main branch에 merge나 rebase 한 것이 아닌 일종의 미리보기
-> 반영할려면 main 브랜치로 이동후 pull

원격의 새 branch 확인

원격에서 branch 추가 후 git fetch

수정사항은 당연히 반영 X

git checkout origin/new-branch로 수정사항 확인

원격 저장소에 새로 생긴 브랜치를 로컬에 받아오고 싶은 경우
-> git switch -t origin/new-branch

profile
Journey for Backend Developer

0개의 댓글