잘 안쓰는 git 정리하기 👆
쓰는것만 쓰는 깃이 아닌 안쓰는 기능도 이것저것 사용해보기 위한 깃 정리!
pull upstream master
-> checkout 내 브랜치
-> merge master
-> commit (conflict이 난 경우 충돌 해결하고 commit)
-> git push 내 브랜치
의 형태로 이용했다.
이렇게 말고 git fetch
를 이용하면 어떻게 할 수 있을까?
단순하게 git flow 중 git pull 브랜치이름 을 실행하면 원격 저장소의 내용을 가져와 자동으로 merge가 되는데, 단순히 pull 받고싶은 branch의 내용을 확인하고 merge 하고 싶을때 fetch를 쓸 수 있다!
결국 git pull = git fetch + git merge
라는 뜻!
나의 feature branch에서
git pull origin master
을 실행하면 바로 병합한 뒤 conflict 를 보여준다.
그럼 fetch와의 차이를 보기위해 아래 명령어로 해당 pull이력을 취소 시킨다
git reset --hard ORIG_HEAD
git fetch origin master
를 실행한다
git pull 과는 다르게 우선 저장소의 내용을 가지고 온 것이기 때문에 따로 conflict이 나지 않는다. 저장소의 내용은 FETCH_HEAD라는 브랜치에 (자동으로) 반영된 것을 알수있다.
git merge FETCH_HEAD
명령어를 실행하면 아까 pull 했을때 랑 동일하게 작동한다.보통 내 로컬 저장소에서 원격저장소의 코드를 pull 받은 다음 내 feature 브랜치를 적용 시키기 때문에 fetch를 쓸 일은 많이 없을 것 같지만
부분 적으로 불러온다음 내가 지정한 브랜치에만 적용하고 싶을때는 사용할 수도 있을 것 같다!