본문으로 바로가기

1. Branch

네이버 영어사전

 

[Git Branch 란?]

 Git의 branch를 이용하여 하나의 프로젝트(디렉터리)를 여러 모습으로 관리할 수 있습니다.

 실무에서 프로젝트를 관리할 경우 운영 용도, 테스트 용도, 새 기능 용도, 버그 수정 용도로 다양한 모습이 필요하게 되는데

그 경우 Git의 Branch를 활용하면 이 모든 모습을 하나의 디렉터리에서 진행할 수 있습니다.

 

 또는 여러 작업들이 각각 독립되어 진행될 때 각각의 브랜치에서 작업한 뒤

확정된 것을 메인 브랜치에 통합(Pull Request, Merge Request)하는 방법으로 협업에도 유리합니다.

예) 신기능 1, 신기능 2, 코드 개선, 긴급 수정...

 

[활용(장점)]

1. 하나의 프로젝트를 여러 모습으로 관리 가능

2. 협업에 유리

 

[기업에서 Git Branch를 활용하는 방식, GitFlow]

https://nvie.com/posts/a-successful-git-branching-model/

 

A successful Git branching model

In this post I present a Git branching strategy for developing and releasing software as I’ve used it in many of my projects, and which has turned out to be very successful.

nvie.com

 

2. 브랜치 생성 / 이동 / 삭제하기

GitFlow를 참고하여 브랜치를 생성, 이동, 삭제해 보겠습니다.

(그냥 예시를 든 것이라 편하게 보거나 무시하면 됩니다.)

[브랜치 명]

 main (운영)
 develop (개발)
 feature (기능 개발)
 fix (수정)
 release (배포)

 

[운영 방식 예시]

 새 기능 개발 시 develop 브랜치에서 feature/???로 브랜치 생성하여 개발 후 develop에 머지(PR, MR) 합니다. 

 운영 중 수정이 필요한 부분은 main 브랜치에서 fix/???로 브랜치를 생성하여 개발 후 main, develop 브랜치에 머지(PR, MR) 합니다. 

 

[브랜치 생성]

main은 git init 할 경우 기본으로 생성되는 브랜치이므로 develop, release 브랜치를 생성해보겠습니다.

$ git branch (브랜치명)
$ git branch develop
$ git branch release

 

fatal: not a valid object name: 'main' 에러가 뜨는 경우 git에 commit 내역이 하나도 없으므로 뜨는 상황입니다.

파일을 하나 추가하고 commit 해줍니다. (one.txt 파일 생성 후 git add & git commit)

commit

 

[브랜치 리스트 확인]

$ git branch 

[모든 브랜치를 출력합니다. -> 원격 저장소와 연동되어 있을 경우 원격 저장소의 브랜치도 출력됩니다.]
$ git branch -a

git branch

 

[브랜치 이동]

develop, release 브랜치로 이동해봅니다.

(checkout 명령어가 Git 2.23 버전부터 switch, restore 분리)

$ git switch (브랜치명)
$ git switch develop

$ git switch release

 

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

$ git switch -c (브랜치명)
$ git switch -c test

 

[브랜치명 수정]

develop로 이동한 상태에서 feature 브랜치를 생성 후 브랜치명을 수정해 봅니다.

$ git branch -m (기존 브랜치명) (새 브랜치명)
$ git switch develop

$ git branch feature/1

$ git branch
* develop
  feature/1
  main
  release

$ git branch -m feature/1 feature/2

$ git branch
* develop
  feature/2
  main
  release

 

[브랜치 삭제]

feature/2 브랜치를 삭제해봅니다.

$ git branch -d (삭제할 브랜치명)
$ git branch -d feature/2
feature/2 브랜치 삭제

$ git branch
* develop
  main
  release

 

3. 여러 브랜치에서 작업해보기

main, develop, release 브랜치에 이동 후 commit 하여 브랜치 별로 다르게 작업해봅시다.

1. main 브랜치 이동 후 one.txt 파일에 main 입력 후 commit

2. develop 브랜치 이동 후 one.txt 파일에 main 입력 후 commit

3. release 브랜치 이동 후 one.txt 파일에 main 입력 후 commit

4. 이후 브랜치 이동하면서 파일의 변화를 확인해 봅니다.

$ git switch main

one.txt 파일 수정

$ git commit -am "main commit"

$ git switch develop

one.txt 파일 수정

$ git commit -am "develop commit"

$ git switch develop

one.txt 파일 수정

$ git commit -am "release commit"

 

 

[결과]

git switch main

 

git switch develop

 

git switch release