GitHub 의 Fetch / Pull 사용법

UkJJang·2021년 9월 7일
0

만들면서 배우는 Git+GitHub 입문 책을 보면서 학습하였습니다.

GitHub는 혼자서만 사용하는 것이 아닌 팀원들과 협업을 위해 사용된다. 따라서 자신이 수정하고 있는 내용을 다른 팀원또한 수정을 진행하여 나보다 먼저 저장소를 변경할 수도 있다.

그 후에 내가 수정한 내역을 Push를 진행하면 Git에서는 Push를 거부하게된다.

그 이유는 로컬 저장소의 커밋들을 원격 저장소]와 맞쳐줘야 Push를 진행할 수 있기 때문이다.

fetch는 원격 저장소의 커밋들을 로컬 저장소로 가져온다. 사용자는 로컬로 가져온 커밋들을 자신이 수정한 로컬저장소의 작업과 적절하게 병합하여 원격저장소에 다시 push를 해줘야한다.

fetch와 pull 두 방법 모두 원격 저장소의 커밋들을 로컬 저장소로 가져와 합하는 방법이다.

하지만 두 방법은 차이점이 존재한다.

git pull - 원격 저장소의 정보를 가져오면서 자동으로 로컬 브랜치에 병합까지 수행시켜준다. 하지만 이 작업은 어떤 내용이 병합이 되었는지 확인할 수 없다. 따라서 이 방법보단 fetch를 통하여 가져온 후 적절히 병합하여 원격저장소에 제출하는 방법이 더 안전하다.

git fetch의 작업흐름

Github 상에서 파일수정 > (로컬 저장소 내용 변경 및 커밋 > 푸시 실패 > 페치 > 병합 > 푸시 재시도 ) > GitHub 확인

git fetch 실습해보기

가장먼저 명령어를 통해 연결이 되어있는지 확인한 후 원격 저장소에서 수정하고 싶은 파일 하나를 수정해본다.


깃 허브 페이지에서 해당파일 수정

Update 파일이름 - 파일이름의 수정 내역을 남길 커밋메세지를 입력한다.

Add on option extended decription : 자세한 설명을 남겨야 할 경우 커밋과 관련된 설명을 입력한다.

Commit directory to the master branch - 마스터 브랜치에 바로 커밋할때 사용한다.

Create a new ~ - 풀 리퀘스트를 위한 새로운 브랜치 생성시 사용

그 후 로컬 Git bash에서도 똑같이 파일을 수정한 후 커밋을 진행해본다.

푸쉬가 거절이 되는것을 확인할 수 있다.

힌트에서는 pull명령을 사용하라고 하지만

fetch로 진행한다.

git fetch를 진행하고 브랜치가 어떤것이 있는지 확인한다.

git merge를 누르고 스페이스바를 눌러 한칸띄고 탭키를 누르면 어떤 브랜치가 병합 대상이 될 수 있는지 확인이 가능함.

패치를 진행해서 다시 수정하여 푸쉬하려고 해도 계속 이미 업데이트가 되었다고 나오는 문제가 발생했다. 

git fetch가 아닌 git fetch --all 을 이용해 모든 내용을 다 가져오도록 한 후 진행하니 해결이 되었음.

그 후 머지와 diff명령어를 통해 차이점을 확인하고 파일을 수정 후 다시 커밋하여 push를 진행해주면 완료가된다.

Git pull은 원격 저장소에서 수정 한 후 실습 결과 바로 가져와 합쳐지는 것을 확인할 수 있다.

commit / merge 명령어를 실행해도 수행할게 없다는 메세지를 확인할 수 있음.

profile
꾸준하게 성실하게

0개의 댓글