2. 원격 브랜치 정보 가져오기

    - git pull 명령은 원격 저장소의 최신 커밋을 지역 저장소에 합쳐준다.
      하지만 최신 커밋을 합치기 전원격 저장소에 어떤 변화가 있는지 먼저 살펴봐야 한다.

      이럴 때 원격 브랜치에서 정보만 먼저 가져올 수 있다.

    - 원격 브랜치의 역할과 원격 브랜치에서 정보를 가져오는 방법, 가져온 정보를 지역 저장소에 병합하는 과정까지 본다.

 

    2-1. 원격 master Branch

           - 지역 저장소의 'master' Branch처럼 원격 저장소도 만들 때 기본으로 master Branch가 생성된다.

           - 원격 저장소에 있는 브랜치는 '원격 Branch', 원격 저장소에 있는 master Branch는 '원격 master Branch'로 구별!

원격 저장소에 있는 HEAD -> 원격 저장소의 master Branch -> commit "add d"

 

HEAD->master : add d가 지역 저장소의 최종 커밋이라는 의미

origin/master : add d가 원격 저장소의 최종 커밋이라는 의미

현재 지역 저장소와 원격 저장소의 최종 커밋이 같다.

 

git_home에서 f3.txt 생성 후 커밋하기 및 지역 저장소의 최종 커밋과 원격 저장소의 최종 커밋이 달라진 것 느끼기
현재 branch가 origin/master branch의 버전보다 하나 앞서있고, git push하라고 알려주고 있다.
push한 후에 master branch와 origin/master branch가 같은 커밋을 가리키고 있다.

 

    2-2. 원격 Branch 정보 가져오기 - git fetch

           - fetch : '불러오다, 가져오다' 라는 뜻으로 git fetch 명령은 원격 저장소의 정보를 가져오는 기능이 있다.

           - pull vs fetch
             pull : 원격 저장소의 커밋을 가져와서 무조건 지역 저장소와 합친다.

             fetch: 원격 브랜치에 어떤 변화가 있는지 그 정보만 가져온다.

           - 보통 팀 작업을 할 때 다른 사람이 수정한 소스를 훑어보고 지역 저장소와 합치고 싶다면
             pull 대신 fetch를 이용해서 커밋을 가지고 온 후, 지역 저장소와 합치면 된다.

 

아까 git_home에서 원격 저장소로 push했던 f3.txt가 보이지 않는다!

[git log --oneline] : (HEAD->master)만 보이고, 원격 저장소의 origin/master는 보이지 않는다.

fetch로 원격 저장소의 최신 정보를 가져왔지만, 아직 지역 저장소에 합치지 않아

원래 git_office에 있던 최신 커밋만 나타난다.

[git fetch] : 현재 branch가 origin/master에 비해 1개의 커밋이 뒤쳐져 있다고 뜨면서,

git pull 하면 update를 할 수 있다고 알려준다.

[fetch로 가져온 최신 커밋 정보] : fetch로 가져온 원격 저장소 정보는 FETCH_HEAD라는 branch로 가져온다.

 

master branch로 이동한 후 git merge로 병합하기

fetch한 이후에 최신 커밋을 현재 branch에 합치려면

1) git pull 명령을 사용해서 원격 저장소의 소스를 내려받거나,

2) git merge 명령으로 FETCH_HEAD에 있던 커밋을 병합할 수도 있다.

 

'create f3.txt'라는 최신 커밋이 지역 저장소에 반영이 된 것을 볼 수 있다.

         따라서, git pull 명령 = git fetch + git merge FETCH_HEAD 명령으로 볼 수 있다.

git fetch로 원격 브랜치를 가져온 다음 git merge 명령을 사용해 원격 브랜치와 현재 브랜치를 합쳐주는 것을

git pull 명령으로 한꺼번에 할 수 있다.

 

           +) fetch
                1) git merge origin/master : 원격 master에 있는 커밋을 병합할 때

                2) git merge origin/브랜치 이름 : 다른 브랜치에 있는 커밋을 병합할 때

                3) git merge FETCH_HEAD : fetch한 뒤 지역 저장소에 반영하지 않은 최신 커밋을 병합한다.

            

+ Recent posts