git

Git 브랜치 이해하기

임베디드 친구 2024. 12. 6. 13:36
반응형

Git을 사용하다 보면 브랜치는 꼭 알아야 할 중요한 개념 중 하나입니다. 프로젝트를 효과적으로 관리하고 개발을 진행하기 위해 브랜치를 이해하는 것은 필수적입니다. 이번 포스팅에서는 Git 브랜치의 개념과 필요성부터 브랜치 생성, 이동, 병합, 그리고 브랜치 전략까지 자세히 알아보겠습니다.

브랜치의 개념과 필요성

Git의 브랜치는 코드의 다른 버전을 독립적으로 작업할 수 있게 해주는 구조입니다. 마치 평행우주와 같은 개념으로, 프로젝트의 "메인 타임라인"에서 벗어나 새로운 타임라인을 만들고 그곳에서 실험하거나 기능을 추가할 수 있습니다. 이후에 원하는 경우 메인 타임라인에 다시 합칠 수 있습니다.

브랜치를 사용하면 다음과 같은 장점을 얻을 수 있습니다:

  • 독립적인 개발 환경: 다른 작업과 독립적으로 특정 기능을 개발하거나 버그를 수정할 수 있습니다.
  • 협업 효율성 증가: 여러 개발자가 동시에 작업하더라도 서로의 작업에 영향을 주지 않으며, 나중에 병합하여 통합할 수 있습니다.
  • 리스크 관리: 메인 코드에 직접 변경을 가하지 않고 실험적인 작업을 별도의 브랜치에서 안전하게 진행할 수 있습니다.

예시로 이해하는 브랜치

예를 들어, 현재 여러분의 메인 코드가 잘 동작하고 있다고 가정합시다. 하지만 새로운 기능을 추가하고 싶다면, 바로 메인 코드에 적용하기보다는 새로운 브랜치를 만들어서 그곳에서 개발을 진행하는 것이 좋습니다. 이렇게 하면 새로운 기능이 제대로 동작하는지 확인한 후에만 메인 브랜치에 병합할 수 있기 때문에, 예기치 않은 문제가 발생하더라도 메인 코드에는 영향을 주지 않습니다.

브랜치 생성 및 이동

Git에서 브랜치를 생성하고 이동하는 것은 매우 간단합니다. 여기서는 git branchgit checkout 명령어를 사용하여 브랜치를 다루는 방법을 알아보겠습니다.

브랜치 생성하기

새로운 브랜치를 생성하려면 다음 명령어를 사용합니다:

git branch <브랜치_이름>

예를 들어, 새로운 기능을 위한 브랜치인 feature/login을 만들고 싶다면 다음과 같이 입력합니다:

git branch feature/login

브랜치 목록 확인하기

현재 존재하는 브랜치를 확인하려면 아래 명령어를 사용하세요:

git branch

이 명령어를 입력하면, 현재 존재하는 브랜치 목록이 출력되며, 현재 작업 중인 브랜치에는 * 표시가 붙습니다.

브랜치 이동하기

다른 브랜치로 이동하려면 다음과 같이 git checkout 명령어를 사용합니다:

git checkout <브랜치_이름>

예를 들어, feature/login 브랜치로 이동하려면 다음과 같이 입력합니다:

git checkout feature/login

Git의 최신 버전에서는 git switch 명령어를 이용해 브랜치를 더 쉽게 이동할 수 있습니다:

git switch <브랜치_이름>

브랜치 생성과 동시에 이동하기

브랜치를 생성하고 곧바로 해당 브랜치로 이동하려면 -b 옵션을 사용할 수 있습니다:

git checkout -b <브랜치_이름>

예를 들어, feature/signup 브랜치를 생성하고 이동하려면:

git checkout -b feature/signup

브랜치 병합

브랜치에서 작업을 마친 후에는 이를 메인 브랜치에 병합하여 다른 개발자와 공유하거나 배포를 준비할 수 있습니다. 병합을 위해서는 git merge 명령어를 사용합니다.

브랜치 병합하기

다음은 브랜치를 병합하는 기본적인 방법입니다:

  1. 메인 브랜치로 이동하기: 병합을 시작하기 전에 병합 대상이 될 브랜치로 이동해야 합니다.

    git checkout main
  2. 병합 명령어 실행: 병합할 브랜치를 지정하여 병합합니다.

    git merge <브랜치_이름>

    예를 들어, feature/login 브랜치를 main 브랜치에 병합하려면 다음과 같이 입력합니다:

    git merge feature/login

병합 충돌 해결하기

병합을 진행할 때 동일한 파일의 동일한 부분이 다른 브랜치에서 수정된 경우 병합 충돌(merge conflict) 이 발생할 수 있습니다. 이런 경우 Git은 충돌이 발생한 파일을 표시해주며, 사용자가 직접 수정하여 해결해야 합니다.

파일을 열어 보면 충돌된 부분이 다음과 같이 표시됩니다:

<<<<<<< HEAD
현재 브랜치의 내용
=======
다른 브랜치의 내용
>>>>>>> feature/login

충돌을 해결한 후에는 다음 명령어를 사용하여 병합을 완료합니다:

git add <파일_이름>
git commit

브랜치 전략

팀이나 프로젝트의 규모가 커질수록 브랜치 관리가 중요해집니다. 효과적으로 브랜치를 관리하기 위해 여러 브랜치 전략을 사용할 수 있습니다. 대표적인 브랜치 전략으로 Git Flow가 있습니다.

Git Flow

Git Flow는 기능 개발, 릴리스 준비, 핫픽스 등을 효율적으로 관리하기 위해 브랜치를 체계적으로 사용하는 전략입니다. 주요 브랜치로는 다음과 같은 것들이 있습니다:

  • main 브랜치: 항상 안정적인 상태의 코드를 유지합니다. 배포 가능한 상태만 여기에 포함됩니다.
  • develop 브랜치: 개발 중인 상태를 유지하는 브랜치입니다. 모든 기능 브랜치가 여기로 병합되며, 다음 릴리스의 기본이 됩니다.
  • feature 브랜치: 새로운 기능을 개발할 때 사용하는 브랜치입니다. develop 브랜치에서 시작하여 개발이 완료되면 다시 develop에 병합됩니다.
  • release 브랜치: 릴리스 준비를 위해 사용되는 브랜치입니다. 버그 수정이나 작은 개선 작업을 진행하고, 이후 maindevelop 브랜치에 병합합니다.
  • hotfix 브랜치: main 브랜치에 직접적인 문제가 생겼을 때 긴급히 수정하기 위한 브랜치입니다. 수정 후 maindevelop에 병합합니다.

기타 브랜치 전략

  • GitHub Flow: 비교적 간단한 전략으로, main 브랜치와 기능 브랜치만을 사용하는 방식입니다. 기능 개발이 완료되면 Pull Request(PR)를 통해 main에 병합합니다.
  • GitLab Flow: 환경에 따라 브랜치를 관리하는 전략으로, mainproduction, 그리고 기능 브랜치를 사용하는 방식입니다. 배포 환경에 맞춰 다양한 브랜치를 운용할 수 있습니다.

결론

Git의 브랜치는 개발의 필수적인 부분으로, 협업 및 코드 품질 관리를 위해 꼭 필요한 기능입니다. 이번 포스팅에서는 브랜치의 개념과 필요성, 브랜치 생성 및 이동, 병합 방법과 브랜치 전략에 대해 알아보았습니다. Git 브랜치를 잘 활용하면 프로젝트를 보다 체계적이고 효율적으로 관리할 수 있습니다.

반응형