본문 바로가기
DevOps

GIT을 이용한 Branching과 Merging

by dev-woo 2023. 3. 25.
반응형

안녕하세요, 연봉 1억 개발자 dev-woo 입니다.
이번 글에서는 GIT에 대한 개발자 관점에서의 기본 개념, Branching과 Merging에 대해 설명드리려고 합니다.

GIT의 기본 개념

GIT이란 무엇인가?

GIT은 분산형 버전 관리 시스템(Distributed Version Control System)이며, 소스 코드 관리를 위한 도구입니다. 여러 개발자가 동시에 한 코드베이스를 작업할 때 충돌을 방지하기 위해 사용됩니다. GIT을 이용하면 소스 코드를 저장하고 추적하면서 다른 개발자와 함께 작업할 수 있습니다.

GIT에서 중요한 개념

GIT을 사용할 때 몇 가지 중요한 개념을 이해하는 것이 중요합니다.

Repository(저장소)

Repository는 프로젝트의 모든 소스 코드를 저장하고 추적하는 장소입니다.

Commit(커밋)

Commit은 Repository에 변경된 소스 코드의 스냅샷을 저장하는 것입니다.

Branch(브랜치)

Branch는 Repository 내에서 코드베이스의 복제본이며, 동일한 코드 베이스에서 별도로 개발이 이루어질 수 있도록 해줍니다.

Merge(병합)

Merge는 독립적으로 개발된 코드를 하나로 합치는 것입니다.

Branching과 Merging

Branching

Branching은 동시 다발적인 개발 과정에서 중요한 요소 중 하나입니다. Branch는 개발자들이 공통된 Repository에서 각자의 동시 다발적인 개발 작업을 수행할 수 있도록 합니다. 팀 내에서 다른 브랜치에서 작업한 이후에도 최종적으로 모든 브랜치는 Repository에 병합이 되어 합쳐집니다.

Branching을 사용하는 이유

Branching을 사용하는 이유는 다음과 같습니다.

  • 다수의 개발자들이 동일한 코드 베이스에서 다수의 변경 사항을 만들 때 충돌을 방지할 수 있습니다.
  • 배포용 브랜치와 개발 브랜치를 분리함으로써 안정성을 높일 수 있습니다.
  • 특정 이슈나 작업에 대한 변경 내용만 포함된 commit을 발행할 수 있습니다.
  • 작업 하고 있는 feature에 대해 다른 branch에서 실험적인 작업을 수행할 수 있습니다.

Branching의 예시

Branching은 개발자의 작업 흐름에 따라 다양한 영역에서 사용됩니다. 몇몇 일반적인 Branching 패턴에 대해 설명드리겠습니다.

  1. Master Branch

Master Branch는 Repository에서 가장 중요한 브랜치입니다. 모든 브랜치는 Master Branch에서 분기됩니다. Master Branch는 배포본 소스코드 저장공간으로도 인식됩니다.

$ git checkout master

Master Branch로 체크아웃하기 위해서는 위 명령어를 입력합니다.

  1. Feaure Branch

Feature Branch는 새로운 기능을 개발할 때 사용됩니다. Feature Branch에서는 작은 변경사항을 발행할 수 있습니다.

$ git checkout -b feature-1 master

새로운 Feature Branch를 만들기 위해서는 위 명령어를 입력합니다. feature-1은 Branch의 이름을 의미합니다.

  1. Release Branch

Release Branch는 배포할 준비가 된 소스코드를 보유하고 있는 Branch입니다. Feature Branch로부터 Release Branch로 병합됩니다.

$ git checkout -b release-1.0 master

새로운 Release Branch를 만들기 위해서는 위 명령어를 입력합니다. release-1.0은 Branch의 이름을 의미합니다.

  1. Hotfix Branch

Hotfix Branch는 배포된 Release 버전에서 발견된 버그를 수정하기 위해 사용됩니다.

$ git checkout -b hotfix-1.0.1 master

새로운 Hotfix Branch를 만들기 위해서는 위 명령어를 입력합니다. hotfix-1.0.1는 Branch의 이름을 의미합니다.

Branch를 관리하는 방법

Branch를 관리하는 것은 해당 코드 베이스를 관리하는 것과 같습니다. Branch의 creation, deletion, merging, rebasing 등을 다룹니다.

  • Branch 생성
$ git branch <new_branch>
  • Branch 삭제
$ git branch -d <branch_to_delete>
  • Branch 목록 보기
$ git branch

Merging

Merging은 여러 Branch를 하나로 합치는 것입니다. Merging은 변경된 소스 코드를 하나로 통합하며, 다수의 개발자가 독립적으로 개발한 코드를 함께 참조하고 사용할 수 있습니다.

Merging 방법

가장 일반적인 Merging 방법은 Fast-forward Merging과 3-way Merging입니다.

  1. Fast-forward Merging

Fast-forward Merging은 충돌이 발생하지 않을 때 사용됩니다.

$ git merge <branch_to_merge>

기존에 작성된 Branch를 Merge할 때 위 명령어를 입력합니다.

  1. 3-way Merging

3-way Merging은 서로 다른 Branch에서 개발된 소스 코드들을 병합할 때 사용됩니다.

$ git merge --no-ff <branch_to_merge>

위 명령어를 이용해 새로운 Merge commit을 만듭니다.

Conflict 해결

때로는 두 Branch에서 수정된 소스 코드가 동일한 부분을 수정할 때 충돌이 발생합니다. 이러한 경우는 Conflict 해결을 위해 사용자의 개입이 필요합니다.

  • 충돌 발생 확인
$ git status
  • 충돌이 발생된 파일을 열어 비교 후 충돌을 해결합니다.
$ git add <resolved_file>
$ git commit

위 명령어를 이용해 Conflict를 해결할 수 있습니다.

마무리

이번 글에서는 GIT을 이용한 Branching과 Merging에 대한 내용을 다루었습니다. GIT은 협업 작업에서 필수적인 도구입니다. Branching과 Merging을 제대로 사용하면 높은 수준의 협업이 가능할 것입니다.

감사합니다.

참고자료

반응형

댓글