Image
CI\CD/Git Remote

[Git Remote] git pull을 이용해 fetch와 merge 한 번에 하기

git pull이란?

git pull은 Remote Repository의 커밋을 가져온 다음(git fetch) 현재의 Working Directory에 Merge하는 동작을 하는 명령어이다.

 

 

git pull = git fetch + get merge

 

예를 들어 다음과 같은 상태가 있다고 해보자. GitHub의 master 브랜치에는 fourth commit까지 있다. 하지만 Local master 브랜치는 second commit까지 밖에 없다. Remote Branch 를 트래킹하는 origin/master 브랜치도 fetch가 안되어 second commit을 바ㅏㄹ보고 있다.

그림1. git pull 예시

 

 

이 상태에서 git fetch를 하면 remote 브랜치를 트래킹하는 origin/master가 다음과 같이 변경된다. [그림2]처럼 origin/master가 Remote master branch의 최신 커밋을 트래킹해서 fourth commit까지 가져온다.

 

그림2. git fetch

 

 

그 후 origin/master를 Local의 master로 머지시키면 [그림3]과 같이 Local master branch도 fourth commit이 HEAD commit이 된다.

그림3. git merge

 

이 동작이 바로 git pull의 동작이다. git pull은 git fetch와 git merge 동작을 한 번에 하는 명령어이다. 이로 인해 git pull에서는 충돌이 일어날 수 있다.

 

 

 

git pull로 인한 conflict

git pull은 merge 동작을 포함하기 때문에 conflict이 일어날 수 있다. 예를 들어 [그림4]와 같이 Local master branch에 new commit이 있는 상태에서 remote branch에 새로운 커밋이 있다면 이 둘이 같은 파일을 수정했을 경우 conflict가 일어난다.

 

그림4. git pull conflict

 

이 conflict는 Local conflict를 해결하는 방법으로 해결하면 된다. 만약 conflict을 해결하는 방법이 궁금하면 이글을 보도록 하자.

 

[Git] git merge 한 번에 정리하기 : Fast Forward Merge, Commit Merge, Conflict Merge

Git merge란? git branch를 다른 branch로 합치는 과정을 merge라 한다. merge의 기본 단위는 브랜치이며, git merge 명령어로는 커밋 단위로 합치기가 불가능하다. Fast Forward Merge 가장 기본적인 merge는 바..

kotlinworld.com

 

반응형

 

이 글의 저작권은 '조세영의 Kotlin World' 에 있습니다. 글, 이미지 무단 재배포 및 변경을 금지합니다.

 

 

Kotlin, Android, Spring 사용자 오픈 카톡

오셔서 궁금한 점을 질문해보세요!
비밀번호 : kotlin22

open.kakao.com