GIT

GIT : 브랜치 머지, 병합 명령어 예제, 개요, 설명

A Thin Idea 2023. 1. 22. 12:00
반응형

https://git-scm.com/docs/git-merge

 

Git - git-merge Documentation

During a merge, the working tree files are updated to reflect the result of the merge. Among the changes made to the common ancestor’s version, non-overlapping ones (that is, you changed an area of the file while the other side left that area intact, or

git-scm.com

 

 

머지 병합 명령어

병합은 브랜치 작업의 필수적인 특징 중 하나입니다. 전반적인 아이디어는 브랜치를 사용해서 독립된 콘텍스트내에서 쉽게 작업할 수 있다는 점입니다. 동시에 다른 일을 할 수 있지만 보통 작업한 것을 다른 브랜치에 통합하고 싶어합니다. 독립된 콘텍스트에서 작업하는 것이 아니고, 어떤 작업을 할 때 새롭고 독립된 콘텍스트에서 계속 작업해서, 작업의 일부를 결합할 필요가 있습니다.

만약 각각 어떤 피처에서 작업하고 있고 같은 회사에서 일하고 있습니다. 어느 시점에서 시점에서 두 피처들이 모두 잘 진행되었고, 괜찮다면 그 둘을 통합하고 싶습니다. 어떤 브랜치에 여러분의 피처를 병합해야 하고, 닿을 수 있는 어떤 브랜치에 제 피처를 병합해야 합니다. 그리고 가끔은 브랜치를 포기하고 병합하지 않습니다. 하지만 작업이 잘 진행되면, 많은 시간 한 브랜치에서 다른 브랜치로 작업한 것을 결합합니다.

 

GIT : 브랜치 머지, 병합 명령어 예제, 개요, 설명 1

 

 

git merge

진짜 일반적인 워크플로우는 master 혹은 main, 둘 중 어떤 용어를 사용해도 상관없지만 그 브랜치를 다루는 것입니다. 단일화된 소스로 취급하거나 가장 안정적으로 만들어져서 아무 것도 망치고 싶지 않은 응용프로그램으로 취급하고 master에서 어떤 실험도 수행하지 않습니다. 그래서 피처 브랜치에서 작업하고 그 작업이 적절하다고 판단되면 master 브랜치에 해당 작업을 통합시킬 수 있습니다.

견고하고, 몇 가지 검사를 거쳤다면 master에 병합할 수 있습니다. 하지만 작업 자체는 피처 브랜치에서 수행됩니다. 그래서 X회사에서 일하는 모든 사람들은 각각의 피처를 위해 자신의 피처에서 작업하고 잠정적으로 master에 그것들을 병합합니다. 병합에 대해 혼동할 수 있는 몇 가지가 있는데, 기본적으로 두 가지 원칙으로 요약하려고 합니다.

특정 커밋이 아니라 브랜치를 병합합니다, 그래서 첫 번째와 두 번째 커밋을 선택해서 결합하지 않습니다. 그리고 두번째는, 항상 현재 HEAD브랜치에 병합합니다. 현재 우리가 있는 위치에, HEAD가 가리키는 위치에 병합합니다.

 

GIT : 브랜치 머지, 병합 명령어 예제, 개요, 설명 2

 

 

이 예제에 두 개의 브랜치 master와 bugfix를 갖고 있습니다. 그리고, bugfix 브랜치에는 커밋이 있습니다. master 브랜치에서 분기되어 만들어진 새 브랜치이고 버그를 수정하면서 2번의 커밋을 실행했습니다. 그리고 이제 그 작업을 master에 병합할 시간입니다. 여기 있는 이 두 커밋이 master에서도 모두 사용 가능하길 원합니다.

여기서 첫 워크플로우는 병합하길 원하는 브랜치로 이동하는 것입니다. 기준 브랜치로 이동해야 합니다. 이 bugfix브랜치를 master에 병합하려고 합니다. master 브랜치로 이동해야 합니다. git switch master를 실행하면 이제 HEAD는 master를 가리킵니다, 두 번째 단계는 git merge 명령을 사용하는 겁니다.

 

GIT : 브랜치 머지, 병합 명령어 예제, 개요, 설명 3

 

 

‘git merge 브랜치 이름’ 명령을 사용합니다, 이 브랜치에서 현재 우리가 있는 브랜치로 변경사항을 병합할 것입니다. bugfix에서 커밋을 가져와서 우리가 있는 브랜치가 어디든 거기에 병합합니다, 이 다이어그램에서는 master입니다. 그리고 master로 이동해서 git merge bugfix를 실행하면 master는 이제 이 커밋을 가리킵니다.

이제 저 커밋에서 이 커밋을 가리킵니다. 이것은 아주 간단한 유형의 병합입니다. 이 색상과 대각선은 단지 이 브랜치들을 시각적으로 구분하는데 도움을 줍니다. 하지만 사실은 서로 다른 포인터를 가진 다른 커밋일 뿐입니다. 일련의 커밋일 뿐이고, 브랜치가 작동하는 방식입니다. master가 있고 bugfix가 분기되어 두 개의 커밋을 생성했습니다.

병합할 때 했던 것은 따라잡기였습니다. master를 동일한 커밋으로 이동시켰습니다. 이것을 빨리 감기 병합이라고 하는데, 따라잡기 위해 이 브랜치에 한 것은 그것뿐이기 때문입니다. 몇 개의 커밋을 빨리 감기한 것뿐입니다. master 브랜치에서 추가적인 작업은 없었습니다. 여기 추가 커밋이 있을 수도 있지만 bugfix에는 없습니다. 그게 병합에서 까다로운 부분입니다.

그래서 그 부분에 대해 얘기하려고 합니다. 하지만 첫 번째 예제에서는 이 빨리 감히 병합에 대해 다룹니다. 2개의 브랜치가 있고 브랜치 중의 하나는 첫번째 브랜치가 갖고 있지 않은 추가 커밋을 갖고 있습니다. 그래서 따라잡기 위해서는 포인터를 앞으로 옮기면 됩니다. 이것이 git merge 명령이 이 예제에서 수행하는 작업입니다.

git merge bugfix, 이 명령은 만약 master 브랜치에 있다면, 포인터를 bugfix로 옮기는 것입니다. 그래서 이제 master는 모든 이력을 갖습니다. 이전 작업뿐만 아니라 bugfix가 갖고 있는 작업도 모두 갖습니다. 

 

 

GIT : 브랜치 머지, 병합 명령어 예제, 개요, 설명 4

 

반응형