본문 바로가기
Programming

Git Branch 이해하기

by 느리게 걷는 즐거움 2024. 12. 10.
반응형

Git은 분산 버전 관리 시스템으로, 프로젝트를 효과적으로 관리하고 팀 협업을 가능하게 합니다. 그중 브랜치(branch)는 프로젝트에서 중요한 개념 중 하나로, 새로운 기능 개발이나 버그 수정 등 독립적인 작업을 안전하게 진행할 수 있게 합니다.

 

Git Branch를 생성하는 이유

 

  1. 독립된 작업 공간 제공
    브랜치를 생성하면 현재 프로젝트의 상태와는 별도로 독립적인 작업 공간이 생깁니다. 이를 통해 기존 코드에 영향을 주지 않고 새로운 작업을 진행할 수 있습니다.
  2. 팀 협업의 효율성 향상
    여러 개발자가 동시에 작업할 때, 각각의 브랜치에서 작업을 하므로 충돌 가능성을 줄이고 병합(Merge)을 통해 결과물을 통합할 수 있습니다.
  3. 리스크 관리
    새로운 기능이나 대규모 변경 작업 시, 메인 브랜치(main 또는 master)에 직접 작업하면 문제가 발생했을 때 되돌리기가 어렵습니다. 브랜치를 활용하면 안정적인 상태를 유지할 수 있습니다.

 

Git Branch 생성 방법

 

1. 새로운 브랜치 생성

다음 명령어를 사용하여 새로운 브랜치를 생성할 수 있습니다:

git branch 브랜치이름

예시 출력

 

git branch feature/login

위 명령어는 feature/login이라는 이름의 새 브랜치를 생성합니다. 그러나 현재 브랜치는 여전히 이전 브랜치에 머물러 있습니다.

 

새로 생성한 브랜치로 변경 (체크아웃)

 

브랜치를 생성한 후 해당 브랜치로 이동하려면 git checkout 명령어를 사용합니다:

git checkout 브랜치이름

예시 출력

git checkout feature/login

위 명령어는 feature/login 브랜치로 이동하여 해당 브랜치에서 작업을 시작합니다.

 

브랜치 생성과 이동을 한 번에 하기

 

Git 2.23 이후 버전에서는 git switch 명령어를 사용하여 브랜치를 더 쉽게 생성하고 이동할 수 있습니다:

git switch -c 브랜치이름

예시 출력

git switch -c feature/login

위 명령어는 feature/login이라는 브랜치를 생성하고, 생성된 브랜치로 바로 이동합니다.

 

현재 브랜치 확인

 

현재 작업 중인 브랜치를 확인하려면 다음 명령어를 사용합니다:

git branch

예시 출력

  main
* feature/login

* 표시는 현재 작업 중인 브랜치를 나타냅니다.

 

브랜치 병합

 

작업을 완료한 후, 새로운 브랜치를 메인 브랜치에 병합하려면 다음과 같이 합니다:

git checkout main
git merge feature/login

이후, feature/login 브랜치를 삭제하여 정리할 수 있습니다:

git branch -d feature/login

 

예시 출력

머지 전 상태
main
  |
  * Commit 3: Latest changes on 'main'
  |
  * Commit 2: Previous work on 'main'
  |
  * Commit 1: Initial project setup (common commit)
  |

feature/login
  |
  * Commit 6: Completed login feature
  |
  * Commit 5: Enhanced login form UI
  |
  * Commit 4: Added basic login functionality
  |
  * Commit 1: Initial project setup (common commit)
  |
  • main 브랜치는 Commit 3까지 작업이 진행된 상태.
  • feature/login 브랜치는 Commit 6까지 독립적으로 작업된 상태.

 

머지 후 상태
main
  |
  * Commit 7: Merge branch 'feature/login' into 'main' (merge commit)
  |\
  | * Commit 6: Completed login feature
  | * Commit 5: Enhanced login form UI
  | * Commit 4: Added basic login functionality
  |/
  * Commit 3: Latest changes on 'main'
  |
  * Commit 2: Previous work on 'main'
  |
  * Commit 1: Initial project setup (common commit)
  |
  • 머지 후, main 브랜치는 feature/login의 변경 사항을 포함하게 됩니다.
  • Commit 7은 머지 커밋으로, main과 feature/login의 작업 결과를 통합한 상태를 나타냅니다.

 

반응형