한 1년전에 깃허브 강의를 들었는데, 쓰던 명령어만 쓰다보니 다른 기능들이 잊혀졌다..
이번에 디프만에서 하는 프로젝트를 하기전에 한 번 더 공부해서 꼬이는 일이 없도록 하기 위함, 앞으로는 다시 이 강의를 안 듣도록 정리하는 마음에서 작성해보았다.!
reset와 revert의 차이점은 revert는 과거로 돌아가는 이력을 남기는 것이고, reset은 아예 없었던 것 처럼 과거로 돌아가는 것이다.
reset처럼 과거로 돌아가면 될텐데 언제 revert를 쓸까?
merge는 두 브랜치를 한 커밋에 이어붙이는 것이고,rebase는 브랜치를 다른 브랜치에 이어붙이는 것이다.
이렇게 브랜치를 합칠 때 merge, rebase를 쓰지만 pull할 때도 쓰인다.
아래처럼 pull 할 것이 있는데 push를 하면 이러한 에러가 뜬다.
git pull --no-rebase - merge
방식git pull --rebase - rebase
방식앞에서 설명한 것처럼 merge 방식으로 하면 두 브랜치를 한 커밋에 이어붙이고, rebase는 브랜치를 다른 브랜치에 이어붙이는 것처럼 보이는 것을 확인할 수 있다.
HEAD는 현재 속한 브랜치의 가장 최신 커밋이다.
git checkout HEAD^
이렇게 ^ 또는 ~: 갯수만큼 이전으로 이동할 수 있다.
HEAD를 이동시키면 익명의 브랜치에 위치함을 알 수 있다. 밑에 사진처럼 main 처럼 브랜치 명이 적혀있어야하는 곳에 익명의 브랜치가 적혀있다.
저렇게 해시값으로 브랜치명이 변경될 때가 있었는데 왜 그런지 몰랐었다 !!
다음글엔 pull vs fetch, ff-merge, 3-way-merge, squash and merge, rebase and merge 등에 대해서 작성해보려고 한다.