안녕하세요. 잇킹 시도르입니다.
깃 관련 내용을 검색하거나 학습하다 보면 '브랜치'라는 용어를 많이 접하실 겁니다.
이 브랜치라는 건 어떤 것일까요?
개발을 하다 보면 의도에 따라 여러 분기가 발생하게 될 겁니다. 그때 각각의 분기에 따른 소스 버전을 관리하기 위한 것으로 생각하면 될 듯합니다.
제가 봤던 유튜브에서는 브랜치를 개발 소스의 '평행우주'라고 표현하더라고요. 가장 이해가 쉬운 표현일 듯합니다.
실제 명령어를 통해서 브랜치를 알아보도록 하겠습니다.
현재 개발자 A는 git_test 프로젝트를 진행 중이며, test1/test2/test3 스크립트가 프로젝트의 결과물입니다.
개발자 A가 갑자기 새로운 아이디어가 떠올랐습니다. 그래서 현재 소스에서 몇 가지 방법으로 개발을 해보고 검토하고 싶습니다. 그런데 이 아이디어로 진행하다가 잘못되었을 때 소스를 다시 되돌릴 엄두가 안 나네요. 그리고 반영한 소스를 지우고 다시 원복 해서 다른 방법으로 진행하는 과정도 너무 귀찮습니다. 이때 사용하는 게 브랜치입니다.
먼저 현재는 어떻게 되어있는지부터 확인해보겠습니다.
git branch : 현재 프로젝트의 브랜치를 확인
(sidorl) D:\My_DEV\py_prj\git_test>git branch
* master
결과가 master가 있고 그 앞에 * 표시가 되어있네요. 현재 별도로 작업을 한 것이 없는 상태입니다. 이 상황에서 기본 브랜치로 master가 있으며, 이게 선택된 상황이라는 것을 알 수 있습니다.
이제 분기가 나뉘도록 브랜치를 새로 만들겠습니다.
git branch 브랜치명 : 브랜치 생성
(sidorl) D:\My_DEV\py_prj\git_test>git branch develop
(sidorl) D:\My_DEV\py_prj\git_test>git branch
develop
* master
develop으로 브랜치를 새로 만들었습니다. git branch를 통해 확인해보니, develop이 생성된 것을 확인할 수 있습니다. 아직 master 브랜치가 선택된 상황이네요
git checkout 브랜치명 : 원하는 브랜치로 시점 변경
(sidorl) D:\My_DEV\py_prj\git_test>git checkout develop
Switched to branch 'develop'
(sidorl) D:\My_DEV\py_prj\git_test>git branch
* develop
master
git checkout을 통해서 브랜치를 변경했습니다.
이제 develop 브랜치에서 개발자 A는 새로운 아이디어로 개발을 진행합니다.
test2를 삭제하고 test3 스크립트를 수정했습니다. 반영한 소스를 add 하고 커밋하겠습니다.
(sidorl) D:\My_DEV\py_prj\git_test>git add -A
(sidorl) D:\My_DEV\py_prj\git_test>git commit -m "delete_test2 revised_test3"
[develop e0e2ded] delete_test2 revised_test3
2 files changed, 2 insertions(+), 2 deletions(-)
delete mode 100644 test2.py
※커밋까지 꼭 완료해야 시점 전환이 자유롭습니다. 커밋을 하지 않으면 checkout을 해도 소스가 변환되지 않습니다.
개발 중에 다른 아이디어를 적용하기로 했습니다.
다시 최초 master 소스로 되돌아 간 후에 다른 브랜치(develop2)로 분기하겠습니다.
(sidorl) D:\My_DEV\py_prj\git_test>git checkout master
Switched to branch 'master'
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
(sidorl) D:\My_DEV\py_prj\git_test>git branch
develop
* master
(sidorl) D:\My_DEV\py_prj\git_test>git branch develop3
(sidorl) D:\My_DEV\py_prj\git_test>git checkout develop2
Switched to branch 'develop2'
(sidorl) D:\My_DEV\py_prj\git_test>git branch
develop
* develop2
master
develop2 브랜치에서는 test3을 삭제하고 test2를 수정했습니다.
커밋까지 완료했습니다.
(sidorl) D:\My_DEV\py_prj\git_test>git add --all
(sidorl) D:\My_DEV\py_prj\git_test>git commit -m "develop2 first commit"
[develop2 b69f162] develop2 first commit
3 files changed, 3 insertions(+), 2 deletions(-)
delete mode 100644 test3.py
create mode 100644 test4.py
소스 비교를 위해 다시 develop 브랜치로 시점을 변경합니다.
이처럼 브랜치를 통해서 자유롭게 소스의 분기를 왔다 갔다 하면서 진행할 수 있게 되는 거죠.
브랜치의 흐름을 보면 다음과 같습니다. 브랜치를 통해 각각의 개발을 계속 진행할 수 있게 됩니다. 각 시점을 계속 바꿀 수도 있고요.
이상입니다!!!
'Programming > Git' 카테고리의 다른 글
[Git]branch(2) - branch 합치기(merge/rebase) 및 삭제 (0) | 2020.04.16 |
---|---|
[Git]Gitlab(4) - 소스 내려 받기(git clone, git pull) (0) | 2020.04.04 |
[Git]Gitlab(3) - 소스 올리기 (0) | 2020.04.03 |
[Git]Gitlab(2) - 윈도우에서 gitlab SSH key 등록하기 (4) | 2020.03.29 |
[Git]Gitlab(1) - 프로젝트 생성과 삭제 (0) | 2020.03.29 |