글을 쓸까 말까 고민했다.

간단한 git 명령어인 pull과 merge를 헷갈려했다는 사실이 창피했기 때문이다. 😅

하지만 기록하지 않으면 금방 잊어버릴 것 같았다. 지금이라도 오래 기억할 수 있도록 기록해두려고 한다.

(틀린 내용이 있을 수도 있으니 언제든 피드백은 환영한다. ^^;;)


배경 설명

팀에서 작업 중인 브랜치들을 분리해야 할 상황이 발생했었다.

작업 시나리오에 Merge와 Pull을 작성했는데 문득 두 개 명령어는 어떤 차이가 있는지 , 무엇이 맞는 건지 궁금해졌다.

작업 시나리오


확인한 내용

책(팀 개발을 위한 Git, Github 시작하기)과 블로그를 참고했고 간단한 테스트를 진행했다.

 

Pull (Fetch + Merge가 합쳐진 작업):   원격 저장소의 변경사항을 로컬 저장소로 가져와서 병합하는 것.

pull에 대한 그림 설명

테스트 내용: 

test1에서 test2를 Pull 했을때 콘솔에 출력된 내용.

콘솔에서는 test2 브랜치를 test1으로 merge 한다는 내용을 마지막에 확인할 수 있다.

 

test1에서 test2를 Pull 했을때 기록된 커밋.

커밋로그에서는 git log에는 새로운 merge로 인한 새로운 commit이 생성된 것을 확인할 수 있었다.


Merge: 서로 다른 브랜치의 변경사항을 합치는 작업.

merge에 대한 그림 설명

테스트 내용:

test1에서 test2를 Merge 했을때 콘솔에 출력된 내용.

콘솔에서 pull과 동일하게 test2 브랜치를 test1으로 merge 한다는 내용을 마지막에 확인할 수 있다.

 

test1에서 test2를 Merge 했을때 기록된 커밋

커밋로그에서도 Pull과 마찬가지로 git log에는 merge로 인한 새로운 commit이 생성된 것을 확인할 수 있었다.


결론

작업 시나리오

적어도 작성한 작업 시나리오에서는 '동일한 작업으로 봐도 된다'라고 결론을 내렸다.


추가 내용

추가로 팀의 Git 컨벤션을 좀 더 상세하게 이해할 수 있었다. 사용하는 방식을 간단하게 설명하면 아래와 같다. 

  1.  master에서 작업 브랜치를 checkout 한다.
  2.  작업이 끝난 뒤, 최신 master에서 작업 브랜치를 pull 한다.
  3.  그 후 배포 브랜치(mgt, front)에 push 한다.

새로운 동료들이 종종 3번 과정에서 push가 아니라 pull로 진행하는 게 문제가 경우가 있었다. (다음에 배포하는 사람은 push 할 때 reject 됨)

 

이럴 때 나는 단순히 commit log가 더 생기기 때문에 mgt에서 pull 하지 말고 master에서 push 부탁한다고 말했다.

틀린 이야기는 아니었지만 상세한 설명이 어려웠는데 이번 기회에 확실하게 이해했고, 좀 더 상세한 설명이 가능해졌다.

 

 

다음에 누군가 같은 실수를 했다면 이렇게 알려주고 싶다. 


배포 브랜치에서 pull을 하게 되면 merge commit이 한번 더 생기기 때문에
이 브랜치들이 master 브랜치보다 더 최신의 commit을 가리키게 된다.

배포 브랜치에서 master를 pull한 상황


이후 배포하는 사람이 master 브랜치의 커밋을 push 하려고 할 때 오류가 발생한 것이다.(master가 old commit을 참조하기 때문)

이후 사람이 push할때 reject 되는 상황

이 상황에서 해결책은 더 최신의 commit을 보는 master_mgt를 master에 push 해야 하는 것이다.

문제가 해결된 상황

 

이렇게 된다면

불필요한 merge commit log가 생기고 결국 두 번 작업을 해야 되기 때문에 기존의 팀 컨벤션이 좀 더 효율적이다.

이라고 말할 수 있다. 


 

과거와 비교해서 상대에게 알려주는 내용은 크게 달라진 게 없다. 하지만 과거에는 내가 명확히 알지 못하는 상태에서 누군가를 알려줬다면 지금은 명확히 아는 것을 자신 있게 알려줄 수 있다. 

 

결론을 얻는데 오래 걸리지 않았고 단순한 내용이었지만 다시 한번 명확하게 개념을 학습했다는 것에 의의를 가졌고 모르는 것은 창피해하지 말고 그때라도 확실히 알아두자라고 생각했다. 

 

애매하게 아는 것보다 명확하게 모르는 게 낫고, 명확하게 모르는 것보단 명확하게 아는 게 낫다!

+ Recent posts