AI & 개발/개발

[Git] 브랜치 기본 명령어와 Merge Conflict 해결 방법 정리

dataminutestone 2026. 7. 6. 10:40

Branch란?

브랜치(Branch)는 하나의 프로젝트에서 서로 다른 코드 흐름을 나누어 관리하는 기능이다.

기존 코드는 그대로 유지하면서 새로운 기능을 개발하거나, 무료 버전과 유료 버전처럼 서로 다른 버전을 따로 관리할 때 사용할 수 있다.

예를 들어 기본 기능은 master 브랜치에서 관리하고, 유료 기능은 premium 브랜치에서 따로 개발할 수 있다.

master
 └─ 기본 코드 흐름

premium
 └─ 유료 기능 개발
 

강의에서는 기본 브랜치 이름으로 master를 사용했지만, 요즘 GitHub에서는 main을 기본 브랜치로 사용하는 경우도 많다.

브랜치 조회

현재 저장소에 있는 브랜치 목록을 확인할 때는 아래 명령어를 사용한다.

 
git branch
 

현재 내가 위치한 브랜치 앞에는 * 표시가 붙는다.

예를 들어 아래처럼 보일 수 있다.

 
* master
  premium
 

이 경우 현재 위치한 브랜치는 master이다.

브랜치 생성

새로운 브랜치를 만들 때는 git branch 명령어를 사용한다.

 
git branch <브랜치명>
 

예를 들어 premium 브랜치를 만들고 싶다면 아래처럼 작성한다.

 
git branch premium
 

다만 이 명령어는 브랜치를 생성만 한다.

브랜치를 만들었다고 해서 자동으로 해당 브랜치로 이동하는 것은 아니다.

브랜치 이동

이미 존재하는 브랜치로 이동할 때는 git checkout 명령어를 사용한다.

 
git checkout <브랜치명>
 

예를 들어 premium 브랜치로 이동하려면 아래처럼 작성한다.

 
git checkout premium
 

브랜치를 이동하면 작업 디렉토리도 해당 브랜치의 상태로 바뀐다.

브랜치 생성과 동시에 이동

브랜치를 만들면서 바로 그 브랜치로 이동하고 싶다면 -b 옵션을 사용한다.

 
git checkout -b <브랜치명>
 

예를 들어 premium 브랜치를 만들고 바로 이동하려면 아래처럼 작성한다.

 
git checkout -b premium
 

이 명령어는 아래 두 명령어를 한 번에 실행하는 것과 같다.

 
git branch premium
git checkout premium
 

브랜치를 만들고 바로 작업할 때는 git checkout -b를 쓰는 게 더 편하다.

브랜치 삭제

더 이상 필요하지 않은 브랜치는 삭제할 수 있다.

 
git branch -d <브랜치명>
 

예를 들어 premium 브랜치를 삭제하려면 아래처럼 작성한다.

 
git branch -d premium
 

-d는 delete의 줄임말이다.

단, 현재 내가 위치한 브랜치는 바로 삭제할 수 없다.

삭제하려는 브랜치가 있다면 먼저 다른 브랜치로 이동한 뒤 삭제해야 한다.

 
git checkout master
git branch -d premium
 

브랜치 merge

다른 브랜치의 내용을 현재 브랜치에 합칠 때는 git merge 명령어를 사용한다.

 
git merge <브랜치명>
 

예를 들어 현재 master 브랜치에 있고, premium 브랜치의 내용을 합치고 싶다면 아래처럼 작성한다.

 
git merge premium
 

여기서 중요한 점은 merge는 현재 내가 위치한 브랜치를 기준으로 실행된다는 것이다.

즉, 위 명령어는 premium 브랜치에 master를 합치는 것이 아니라, 현재 위치한 master 브랜치에 premium 브랜치를 합치는 것이다.

Merge Conflict란?

Merge Conflict는 두 브랜치에서 같은 파일의 같은 부분을 서로 다르게 수정했을 때 발생한다.

Git이 어떤 내용을 최종 코드로 선택해야 할지 판단하지 못하기 때문에, 사용자가 직접 해결해야 한다.

예를 들어 아래 명령어로 merge를 시도했을 때 충돌이 발생할 수 있다.

 
git merge premium
 

충돌이 발생하면 Git은 자동으로 merge를 완료하지 않고 중간에 멈춘다.

충돌 내용 확인하기

충돌이 발생한 파일을 열어보면 아래와 같은 표시가 생긴다.

<<<<<<< HEAD
현재 브랜치의 내용
=======
병합하려는 브랜치의 내용
>>>>>>> premium
 

각 부분의 의미는 다음과 같다.

<<<<<<< HEAD 아래쪽은 현재 브랜치의 내용이다.

======= 아래쪽은 병합하려는 브랜치의 내용이다.

>>>>>>> premium은 병합 대상 브랜치를 나타낸다.

이 표시를 보고 어떤 내용을 남길지 직접 선택해야 한다.

최종적으로 사용할 코드만 남기고, 충돌 표시인 <<<<<<<, =======, >>>>>>>는 모두 삭제해야 한다.

충돌 해결 후 merge 완료하기

충돌 파일을 수정했다면 해당 파일을 Staging Area에 올린다.

 
git add <파일명>
 

그다음 commit을 실행하면 merge가 완료된다.

 
git commit
 

현재 충돌 상태는 아래 명령어로 확인할 수 있다.

 
git status
 

git status를 보면 어떤 파일에서 충돌이 발생했는지, 어떤 파일이 해결되었는지 확인할 수 있다.

여러 파일에서 Conflict가 발생한 경우

여러 파일에서 conflict가 발생해도 해결 방식은 파일 하나일 때와 같다.

먼저 충돌이 발생한 파일 목록을 확인한다.

 
git status
 

각 파일을 열어서 충돌 표시를 확인한 뒤, 최종적으로 사용할 코드만 남긴다.

<<<<<<< HEAD
현재 브랜치의 내용
=======
병합하려는 브랜치의 내용
>>>>>>> premium
 

파일 하나씩 해결하면서 Staging Area에 올릴 수 있다.

 
git add <파일명>
git status
 

모든 파일의 충돌을 한 번에 해결했다면 아래 명령어를 사용할 수도 있다.

 
git add .
git commit
 

충돌을 해결하고 git add까지 완료한 파일은 resolved 상태가 된다.

merge 취소하기

Conflict가 발생했을 때 반드시 바로 해결해야 하는 것은 아니다.

일단 merge를 취소하고 이전 상태로 돌아가고 싶다면 아래 명령어를 사용한다.

 
git merge --abort
 

이 명령어를 실행하면 진행 중이던 merge 작업이 취소되고, merge를 시도하기 전 상태로 돌아간다.

충돌 파일이 너무 많거나, 잘못된 브랜치를 merge했다고 판단될 때 사용할 수 있다.

브랜치 주요 명령어 정리

이번 챕터에서 배운 브랜치 관련 명령어를 정리하면 다음과 같다.

 
git branch
 

브랜치 목록을 확인한다.

 
git branch <브랜치명>
 

새로운 브랜치를 생성한다.

 
git checkout <브랜치명>
 

기존 브랜치로 이동한다.

 
git checkout -b <브랜치명>
 

새로운 브랜치를 생성하고 바로 이동한다.

 
git branch -d <브랜치명>
 

기존 브랜치를 삭제한다.

 
git merge <브랜치명>
 

현재 브랜치에 다른 브랜치를 merge한다.

 
git merge --abort
 

merge 중 conflict가 발생했을 때 merge 작업을 취소하고 이전 상태로 돌아간다.

핵심 정리

브랜치는 프로젝트의 코드 흐름을 여러 갈래로 나누어 관리하는 기능이다.

새로운 기능을 만들 때 브랜치를 사용하면 기존 코드에 바로 영향을 주지 않고 작업할 수 있다.

브랜치는 git branch로 만들고, git checkout으로 이동한다.

브랜치를 만들면서 바로 이동하려면 git checkout -b를 사용한다.

현재 브랜치에 다른 브랜치를 합칠 때는 git merge를 사용한다.

두 브랜치에서 같은 파일의 같은 부분을 다르게 수정하면 Merge Conflict가 발생할 수 있다.

Conflict가 발생하면 파일을 직접 수정한 뒤 git add와 git commit을 실행하면 된다.

merge를 취소하고 싶다면 git merge --abort를 사용하면 된다.

출처

코드잇 Git 강의 브랜치 관련 챕터