<git merge와 git pull>

git 커맨드 종류가 다양해서 외우고 이해하기 힘들수도 있는데

그 중 git merge와 git pull는 비슷한 커맨드이다

git merge : local branch와 local branch를 merge(병합)한 commit을 생성한다

git pull : local branch와 remote branch를 merge한 commit을 생성한다

정말 그럴까?


master와 my_branch라는 두 개의 브랜치를 사용한다고 할때

git pull은 보통 local/master 브랜치로 remote/master 브랜치를 가져올 때 사용한다

또는 local/my_branch로 remote/my_branch를 가져오는 것도 마찬가지이다

(좀더 자세하게 설명하면, 위와 같이 사용할 경우 merge라기보다는 forward된다)

그런데 이걸 cross하여 사용하면, 즉 local/master 브랜치로 remote/my_branch 브랜치를 가져오면

이 둘이 merge된 commit이 생성된다

결론적으로 merge와 pull 커맨드의 차이점은 local이냐 remote냐의 차이점 뿐이다


---


<git merge와 branch>

merge에 대해 또한가지 설명하자면

merge는 branch 2개가 branch 1개로 되어 하나의 브랜치가 사라지는 작업이 아니다

merge 후에도 여전히 branch들은 각각 유효하다

이와 관계된 이야기로, 필자는 최근 프로젝트를 할때 branch를 아래와 같이 네이밍하여 생성하는 실수를 했었다


branch: master / map_api / db_connect / data_structure_update / ...


작업단위마다 branch를 생성/작업/merge 했고, 사용하지 않는 branch들이 계속 생겨났다

branch는 merge 후에도 계속 사용할 수 있으므로, 작업단위로 네이밍하는 것은 불필요하다

그래서 아래와 같이 네이밍했다


branch: master / hojong / kmk(팀원의 브랜치)


hojong 브랜치만 생성하고, 그 브랜치에서 작업/merge/작업/merge를 반복하여 사용했다

merge 후에도 각 branch들은 vaild하므로 브랜치를 생성 및 사용할 때 위와 같은 내용을 참고하면 좋을 것이라고 생각하여 작성하게 되었다




WRITTEN BY
hojongs
블로그 옮겼습니다 https://hojongs.github.io/