만약 소스 코드 관리를 위해 Git을 사용하는 경우, 프로젝트의 서로 다른 개발 브랜치를 단일 브랜치로 병합해야 할 수 있습니다. 이 문서에서는 Git 병합 명령어를 사용하여 두 개발 브랜치를 어떻게 결합할지 안내합니다.
여러분께 Git 프로젝트를 만드는 방법, 다양한 브랜치를 만들고 한 브랜치를 다른 브랜치로 병합하는 방법을 안내할 것입니다. 추가로, 빠른 순방 병합과 3-way 병합이 무엇인지, 그리고 브랜치를 원격 저장소에 병합하는 방법을 배우게 될 것입니다.
Git 병합이란?
Git은 개발자들이 다른 팀이 작성한 코드의 변경 사항을 추적하고 관리하는 데 사용할 수 있는 인기 있는 DevOps 도구입니다. Git 병합 명령어를 사용하면 현재 개발 브랜치(주 브랜치에서 포크한 것)를 가져와 해당 코드 변경 사항을 주 브랜치로 병합할 수 있습니다.
Git 병합은 팀으로 작업할 때 가장 자주 사용할 명령어입니다. 두 명의 개발자가 동일한 기능을 두 개별 브랜치에서 협업할 수 있는 경우가 있을 수 있습니다. 그러나 시점이 올 경우에는 작업을 하나의 브랜치로 결합해야 하며, 해당 변경 사항을 테스트한 후 협업 개발을 주 개발 브랜치로 병합해야 할 것입니다.
본 개발 브랜치가 업데이트되는 동안 여러분과 다른 개발자들이 작업 중인 별도의 기능 브랜치는 팀의 변경 사항과 업데이트되지 않습니다. 따라서 최상의 방법으로, 풀 요청을 올릴 때 항상 최신 변경 사항이 반영된 로컬 버전의 메인 브랜치를 업데이트하는 것부터 시작해야 합니다. 그런 다음, 변경된 메인 브랜치를 개발 브랜치에 병합한 후 커밋하고 풀 요청을 올려서 메인 개발 브랜치에 병합할 수 있습니다.
Git 병합을 사용하여 두 개의 Git 브랜치를 결합하는 방법
개발자로서 Git에 능숙하다면 생산성을 높일 수 있습니다. 먼저, 명령 줄에서 Git 명령을 실행하는 방법을 이해하는 것이 기본입니다. 시작하기 전에 서로 다른 Git 브랜치를 병합하기 전에 먼저 설정해야 할 것들을 살펴보겠습니다.
필수 조건
시작하려면 다음 항목이 필요합니다:
- A Windows, Mac, or Linux machine to run Git.
- Git 앱은 여기에서 다운로드할 수 있습니다.
- A GitHub or Gitlab account.
- Visual Studio Code와 같은 코드 편집 소프트웨어.
Windows PC에서 Git을 설치하는 데 필요한 다양한 단계를 빠르게 살펴보겠습니다(우리는 Ubuntu에서 Git을 설치하는 방법에 대한 별도의 가이드도 가지고 있습니다):
- 링크를 따라가서 귀하의 컴퓨터에 Git을 다운로드하고 파일을 설치합니다.
- 설치가 완료되면 터미널을 열고 git -version을 입력합니다:
git –version
버전 번호가 반환되면 좋습니다! 그러나, “command not found” 메시지가 나타나면, Git을 $PATH 변수에 추가해야 할 수도 있습니다. 이것은 보통 Windows 문제입니다.
검색에 빠져들지 않도록 빠르게 이 문제를 해결해 보겠습니다.
- 시작 바로 가서 이 PC를 마우스 오른쪽 버튼으로 클릭합니다.
- 속성을 선택합니다.
- 고급 시스템 설정을 클릭합니다.
- 시스템 속성 아래에서 환경 변수를 클릭합니다. 여기에서 $PATH 변수에 값을 추가할 수 있습니다.
- $PATH를 선택하고 편집(Edit)을 클릭하십시오.
- 새로 만들기(New)를 클릭하고 git/cmd에 경로를 추가하십시오.
- 새로 만들기(New)를 클릭하고 git.exe 파일에 경로를 추가하십시오.
변경 사항을 저장하고 터미널로 돌아가서 git -version 명령을 다시 실행하십시오.
git -version
이제 버전 번호가 반환되어야 합니다. 사전 작업을 수행하고 GitHub 또는 Gitlab 계정을 설정한 후, 여러분은 이제 작업을 시작할 준비가 되어야 합니다.
Git 프로젝트 만들기
이 섹션에서는 새 리포지토리를 만드는 데 필요한 다양한 단계를 안내해 드리겠습니다.
새로 만든 Github 계정에서 화면 왼쪽의 새로 만들기(New)를 클릭하십시오.

다음으로 리포지토리에 이름을 지정하고 몇 가지 세부 정보를 작성해야 합니다. 짧은 설명을 추가하고 싶다면 추가하고, 공개로 설정하고, 항상 ReadMe 파일을 추가하는 것이 좋은 실천 방법입니다. 완료한 후 리포지토리 만들기(Create repository)를 클릭하십시오.

이제 코드 편집기에서 작업하려면 새 리포지토리를 복제해야 합니다. 복제(Clone) 버튼을 클릭하고 HTTPS를 선택한 다음 주소를 복사하여 터미널을 엽니다.

터미널에서 cd 명령을 사용하여 프로젝트를 위한 새 디렉토리를 만들 위치를 선택하십시오.
cd user/desktop/repo/
올바른 브랜치에 들어 있을 때 mkdir 명령을 사용하여 새 디렉토리를 만듭니다:
mkdir <name of your directory>
이제, cd 명령을 다시 사용하여 새로 만든 디렉토리로 전환합니다:
cd <name of your newly created directory>
새 디렉토리에 들어간 후 git init 명령을 사용하여 새 리포지토리를 생성합니다:
git init
다음으로 올바른 HTTPS 주소로 git clone 명령을 사용하고 Enter를 누릅니다. 기본적으로 이는 로컬 리포지토리에 메인 브랜치를 만듭니다:
git clone <paste https address here>
이제 Visual Studio Code로 새로 복제한 리포지토리를 엽니다. 이제 코드 작성을 시작할 수 있습니다.
리포지토리를 만든 후에는 이미 메인 브랜치에 있게 됩니다. 최선의 실천 방법으로 코드를 메인 브랜치에 직접 푸시해서는 안 되며, 이는 보호되어야 합니다.
이 자습서를 위해 우리는 보호된 Git 브랜치에 대해 다루지 않겠습니다. 그러나 실제로는 pull 요청 없이는 메인 브랜치로 코드를 푸시할 수 없을 것입니다.
다른 Git 브랜치 생성
우리는 현재 메인 브랜치에 있으며, 어떤 내용을 생성하는 코드를 작성했고, 이제 새로운 브랜치를 만들고 싶습니다.
터미널에서 새 브랜치를 만들고 자동으로 전환하기 위해 git checkout 명령을 사용하세요:
git checkout -b <name of new branch>
이 명령은 새 브랜치를 메인 브랜치에서 분리하고, 따라서 후자의 코드는 변경되지 않아야 합니다.
이제 여기서 재미있는 부분이 등장하는데, 우리는 git merge 명령을 사용할 수 있을 것입니다. 새로 생성한 브랜치에서 먼저 더 많은 코드를 추가하여 현재 브랜치가 일부 새로운 변경으로 메인 브랜치보다 앞서가도록 해야 합니다.
이제 이 새 브랜치를 메인 브랜치로 병합하려고 할 때 병합 충돌이 발생할 수 있습니다. 이는 이미 존재하는 코드와 충돌하는 코드 삽입입니다. 이러한 것들과 거래하는 것은 정말로 즐겁지 않습니다.
그럼 무엇을 하나요? 한 브랜치를 다른 브랜치로 병합하는 방법을 살펴봅시다.
로컬 저장소에서 두 개의 Git 브랜치 병합
새 브랜치에 있을 때 터미널로 이동하고 git branch 명령을 사용하여 현재 위치한 브랜치의 이름을 확인합니다:
git branch
이제 새 브랜치에 있습니다. 다시 git checkout 명령을 사용하여 메인 브랜치로 전환합니다:
git checkout Main
다음으로, git pull 명령을 사용하여 팀이 만든 변경 사항을 가져와 로컬 메인 브랜치를 최신 상태로 업데이트합니다:
git pull
이제 다시 git checkout을 사용하여 메인 브랜치와 병합할 새 브랜치로 전환합니다:
git checkout <your specified branch>
이제 git merge 명령을 사용해야 합니다. 이 명령은 현재 버전의 메인 브랜치를 가져와 개발 브랜치에 병합합니다:
git merge Main
병합 결과로 코드의 최신 버전과 개발한 기능이 포함된 것을 확인할 수 있습니다.
Git 브랜치를 병합하는 다른 방법들
새 브랜치를 메인 브랜치와 병합하는 방법을 보여준 뒤, 사용할 수도 있는 다른 Git 브랜치 병합 방법을 살펴봅시다.
빠른순방향 병합은 무엇인가요?
A fast-forward merge is another way to merge multiple commits on one branch with one command rather than merging them all manually. Another advantage of using a fast-forward merge is that it will combine the histories of multiple commits while squashing the commit history.
메인 브랜치보다 여러 커밋 앞서 있는 하나의 피쳐 브랜치가 있다고 가정해 봅시다. 이러한 모든 커밋을 하나하나 수동으로 병합하지 않고 병합하려면 패스트-포워드 병합을 사용할 것입니다.
우리의 예시에서는 코딩을 시작하고 git add 및 git commit 명령어를 사용하여 새로운 커밋을 브랜치에 추가할 것입니다.
git add <filename>
git commit –m “added a thing”
이제 동일한 명령어를 다시 사용하여 새로운 브랜치에 또 다른 커밋을 추가할 것입니다.
git add <filename>
git commit –m “added another thing”
다음으로, 이 두 커밋을 두 번의 푸시 없이 원격 저장소로 보내고 싶습니다. 이를 위해 git 병합 명령에 -ff 옵션을 사용해야 합니다
git merge --ff
이렇게 하면 두 커밋을 동시에 병합하여 코드를 메인 브랜치에 따라잡게 만들 것입니다.
3-way 병합이란 무엇인가요?
개발 팀이 두 개의 별도 브랜치에서 새로운 기능을 만든 경우를 상상해보세요. 이제 이 브랜치를 업데이트하고 서로 병합하여 후자가 원격 저장소로 코드를 푸시할 준비가 되도록 하려고 합니다.
새로운 기능이 올바르게 함께 작동하는지 확인하기 위해 두 피쳐 브랜치를 서로 병합하고 테스트를 진행하는 것이 좋습니다. 3-way 병합을 사용하면 공통 조상을 가진 두 개의 별도 브랜치를 결합할 수 있습니다.
대상 브랜치로 3-way 병합을 수행하는 데 필요한 단계를 살펴봅시다. 아래 예제에서는 새 브랜치를 만들고, 두 개의 커밋을 추가한 뒤, 3-way 병합을 사용하여 이를 메인 브랜치와 결합하겠습니다.
먼저, ‘new-feature’ 브랜치를 만들고 git checkout 명령어를 사용하여 자동으로 이로 전환합시다. 이 명령어에 -b를 지정하면 새 브랜치가 생성됩니다:
git checkout -b new-feature main
다음으로, 다음 명령어를 사용하여 브랜치에 몇 가지 파일과 새 커밋을 추가합니다:
git add <file>
git commit -m "Start a feature"
그런 다음, 다음 명령어를 사용하여 새 브랜치에 또 다른 커밋을 추가합니다:
git add <file>
git commit -m "Finish a feature"
새 브랜치에 새로운 코드를 추가한 후, 메인 브랜치도 계속 진행되는 상황을 상상해야 합니다. 먼저 git checkout 명령어로 이로 다시 전환하겠습니다:
git checkout main
다음으로, 메인 브랜치에 새 커밋을 추가하겠습니다:
git add <file>
git commit -m "make some changes to Main"
이제, 앞에서 만든 ‘new-feature’ 브랜치를 업데이트된 메인 브랜치와 병합하려 합니다. 메인 브랜치에서의 작업이 계속되므로, git branch 명령어로 ‘new-feature’ 브랜치를 삭제하며 마무리하겠습니다.
git merge new-feature
git branch -d new-feature
이제, 공통 조상이 있는 두 브랜치를 메인 브랜치에 병합했습니다. 이제 이 메인 브랜치는 원격 저장소에 병합되어 소프트웨어 프로젝트를 더욱 발전시킬 준비가 되었습니다. 그 방법에 대해서는 다음에서 설명하겠습니다.
Git 브랜치를 원격 저장소에 병합하는 방법
가끔은 브랜치를 원격 저장소에 병합해야 할 때가 있을 수 있습니다. 이를 수행하는 방법에 대해 단계별로 살펴봅시다.
당신이 제품 소유자가 생성하길 원했던 새로운 기능을 위한 새 코드를 작성했다고 가정해 봅시다. 코드를 테스트한 후 제품 소유자와 함께 검토한 결과, 이제 여러분은 팀의 원격 저장소에 여러분의 노력을 병합할 준비가 되었습니다.
이전에 언급한 대로, 여러분은 결코 직접적으로 메인 브랜치로 코드를 푸시할 수 없어야 합니다. 당신은 항상 이 가이드의 처음에 상세히 소개한 Git 워크플로우를 존중해야 합니다.
Git 프로세스를 검토한 후, 코드를 병합해 봅시다. 여기서 이어지는 곳에서, 지금 우리는 최신 업데이트가 메인 브랜치로 풀리고 여러분의 로컬 저장소로 가져와진 최신 브랜치를 가지고 있습니다.
지금 여러분은 원격 저장소의 문 앞에 서 있습니다. 어떻게 거기에 도착할까요? 간단합니다, 몇 가지 더 많은 git 명령을 사용할 것입니다.
최선의 실행 방법으로, 항상 git status 명령으로 브랜치 상태를 확인해야 합니다. 해당 명령은 추가된 파일, 제거된 파일, 추적되는 파일 또는 추적되지 않는 파일을 보여줍니다.
git status
또한 추적되지 않는 파일을 추가한 경우에는 확인해야 합니다. 그 경우에는 해당 파일을 추가하여 추적되고 커밋에 추가될 수 있도록 해야 합니다.
git add명령어를 사용하여 개발 중에 만든 모든 파일을 추가할 수 있습니다. 이제 특정 파일만 추가하려면 파일 이름을 명시해야 할 수도 있습니다. 모든 파일을 추가하려면 모든 파일에 ” . “을 사용하십시오.
다음으로, git commit 명령어를 사용하여 이전 단계에서 추가한 모든 파일을 커밋합니다. 메시지를 작성하려면 -m 플래그를 사용해야 하며 그렇지 않으면 메시지를 작성하기 위해 텍스트 편집기 모드로 이동하게 될 수 있습니다, 이는 간소화된 프로세스가 아닙니다.
메시지에는 수행한 작업에 대한 간략한 설명을 작성할 수 있습니다. 예를 들어 “새로운 멋진 기능을 만들고 메뉴에 새로운 아이콘을 추가하고 버그 수정을 추가했습니다.”와 같은 식으로 작성할 수 있습니다.
git commit -m “<your commit message goes here>”
마지막으로, git push명령어를 사용하여 브랜치를 원격 저장소에 푸시할 수 있습니다.
git push --set-upstream origin <<your branch name>>
이제 브랜치를 푸시한 후에는 GitHub나 원격 저장소가 호스팅되는 곳으로 가서 최근 푸시를 찾고 풀 리퀘스트 생성를 클릭해야 합니다.

이 버튼을 클릭하면 리뷰어와 팀 구성원을 추가하여 머지 요청을 승인 또는 거부할 사람을 지정할 수 있는 페이지로 이동합니다. 후자의 경우, 원격 주 브랜치로 브랜치를 병합하기 전에 수정해야 할 사항에 대한 코멘트를 추가할 수 있을 것입니다.

리뷰가 완료되고 합병 요청이 승인되면 Merge 버튼이 이용 가능해집니다. 이 버튼을 클릭하여 합병을 시작하세요. 합병이 성공하면 새 코드가 추가되었다는 확인 메시지를 받을 것입니다.

축하합니다! git merge 명령어를 사용하는 기본적인 방법을 알아냈습니다!
결론
Git merge는 다른 브랜치를 사용하여 새 기능을 개발하고 이를 주 저장소에 통합하는 데 도움이 되는 강력한 명령어입니다.
브랜치를 만들고 병합하며 파일과 커밋을 추가하고 이러한 브랜치를 원격 저장소로 푸시하는 데 필요한 적절한 단계를 배웠습니다. 또한 한 명령어를 사용하여 여러 관련 브랜치를 결합하는 빠른 앞으로 합병을 수행하는 방법을 이해했습니다. 이는 개발 작업을 더욱 효율적으로 만드는 데 도움이 될 수 있습니다.
Git는 많은 것을 할 수 있는 강력한 도구입니다. 사용할 수 있는 다양한 명령어에 대해 배울수록 개발자로서 더 나아지게 될 것입니다. 이제 브랜치 합병에 대해 알아야 할 모든 것을 배웠으니 다른 명령어를 배우러 가는 시간입니다. Git 마스터가 되는 여정에서 행운을 빕니다!