이롭게 현명하게

[Git] 깃 브랜치(Git Branch) 본문

Git

[Git] 깃 브랜치(Git Branch)

dev_y.h 2022. 12. 19. 18:27
728x90
반응형

※ 본 포스팅은 윈도우11 환경에서 패스트 캠퍼스 강의를 수강하며 정리한 내용입니다.

 


 

목차

브랜치란?

브랜치 사용법

브랜치 명령어

 

 


 


 

[ 브랜치(Branch)란? ]

 

소프트웨어를 개발할 때에 개발자들은 동일한 소스코드를 함께 공유하고 다루게 된다.

깃은 동시에 여러 개발자들이 프로젝트에서 각기 다른 기능을 개발할 수 있도록 하는 기능을 가지고 있다.

동일한 소스코드 위에서 어떤 개발자는 버그를 수정하기도 하고 또 다른 개발자는 새로운 기능을 만들어 내기도 한다.

이처럼 여러 사람이 동일한 소스코드를 기반으로 서로 다른 작업을 할 때에는 각각 서로 다른 버전의 코드가 만들어질 수밖에 없다.

이런 경우를 위하여 여러 개발자들이 동시에 다양한 작업을 할 수 있게 만들어 주는 기능이 바로 브랜치(branch)이다.

각자의  독립적인 작업 영역(저장소) 안에서 자유롭게 소스코드를 변경할 수 있다.

이렇게 분리된 작업 영역에서 변경된 내용은 나중에 원래의 버전과 비교해서 하나의 새로운 버전으로 만들어 낼 수 있다.

 

독립적으로 어떤 작업을 진행하기 위한 것으로 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 여러 작업을 동시에 진행할 수 있다.

각각 만들어진 브랜치들은 병합(Merge)을 통해 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있다.

합치기(Merge)가 수행되기 전까지는 안정적으로 배포가 이루어지고 있다가 모든 기능이 합쳐진 이후에 다시 배포할 수 있으므로 개발의 안정성이 매우 뛰어나게 된다.

 

 


 

[ 브랜치 사용법 ]

개발자 A는 페이지 3을 기준으로 페이지 4를 만들었다. 개발자 B는 페이지 3을 기준으로 페이지 B를 만들었다.

페이지 4와 페이지 B는 페이지 3을 부모 커밋으로 두고 있다.

페이지 3에서 갈라져 커밋을 만들게 된다. 

한 줄에서 작업을 하게 되면 충돌이 일어날 수 있다. 그러므로 n 줄을 쌓고 나중에 합병(Merge)을 진행합니다. 합병 후 충돌이 나면 합치는 시점에서 명시적으로 충돌을 해결할 수 있다.

그래서 브랜치를 사용한다.

 

브랜치 : 화살표 같은 것

devA 브랜치는 페이지 4를 가리킨다. devB 브랜치는 페이지 B를 가리키고 있다.

여러 명이서 동시에 게발을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 메인 브랜치에서 자신의 작업 전용 브랜치를 만든다. 그리고 각자 개발을 진행한 후 개발이 끝난 사람은 메인 브랜치에 자신의 브랜치의 변경사항을 적용한다. 이렇게 함으로써 다른 사람의 작업에 영향을 받지 않고 독립적으로 특정 개발을 수행하고 그 결과를 하나로 모아 업로드하게 된다. 이러한 방식으로 작업할 경우 '작업 단위' 즉 브랜치고 그 작업의 기록을 중간중간에 남기게 되므로 문제가 발생했을 경우 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워진다.

 

1. git push origin master

 

master 브랜치 (기본으로 만들어져 있는 브랜치)에 커밋을 푸쉬해라

HEAD : 내가 지금 작업하는 로컬 브랜치를 가리킨다.

현재 사용 중인 브랜치의 선두 부분을 나타내는 이름이다. 기본적으로 'master'의 선두 부분을 나타낸다.

'HEAD'를 이동하면 사용하는 브랜치가 변경된다.

 

Master 브랜치 : 페이지 4를 가리키고 있다.

저장소를 처음 만들면 GIT은 바로 'Master'라는 이름의 브랜치를 만들어 둔다. 이 새로운 저장소에 새로운 파일을 추가한다거나 추가한 파일의 내용을 변경하여 그 내용을 저장 (커밋 Commit) 하는 것은 모두 'master'라는 이름의 브랜치를 통해 처리할 수 있는 일이다.

'master'가 아닌 또 다른 새로운 브랜치를 만들어 '이제부터 이 브랜치를 사용할 것이다!'라고 선언 (체크아웃 checkout) 하지 않는 이상, 이때의 모든 작업은 'master' 브랜치에서 이루어진다.

 

 

2. 브랜치 만들기

> git branch 브랜치명

브랜치를 만드는 명령어이다. 브랜치명은 사용자가 원하는 이름으로 할 수 있다.

현재 시점에서 브랜치를 만드는 것이다.

 

 

현재 master브랜치는 페이지 4를 가리킨다. 

git branch devA를 실행하면 devA라는 브랜치를 현재 시점에서 생성하여 페이지4를 동일하게 devA가 가리키게 된다.

 

  

3. 만든 브랜치로 이동하기

> git checkout 브랜치명

checkout이란 내가 사용할 브랜치를 지정하는것을 의미한다.

git checkout devA를 입력하면 HEAD는 devA로 이동한다.

4. 만든 브랜치에 커밋 추가하면?

devA 브랜치에 페이지5를 만들어 커밋을 하게 된다면

master 브랜치는 과거의 커밋인 페이지4를 가리키고있다.devA 브랜치는 새로운 커밋을 가리킨다.

 


 

[ 브랜치 명령어 ]

 

1) 로컬 저장소 mygit에 git branch 입력

현재 존재하는 브랜치를 보여준다.

 

2. git branch devA 브랜치를 만들어준다.

git branch 명령어를 통해 현재 존재하는 브랜치를 보여준다. 만든 devA 브랜치가 보인다.

 

3. git checkout devA를 입력하여 헤더를 devA 브랜치로 옮거준다.

 

 

 

 

 

 

 

[Git] 깃 합치다 충돌났을 때 / 컨플릭트 (conflict)

목차 컨플릭트(conflict) 과정 소스트리 컨플릭트 [ 컨플릭트(conflict) 과정 ] Merge는 합병이라고 말한다. 합집합의 개념으로 이해하면 쉽다. 집합 A에 속하거나 집합 B에 속하는 모든 원소로 이루어진

devyihyun.tistory.com

 

[Git] 소스트리 사용법 1 (feat. branch)

[Git] 깃 브랜치(Git Branch) 목차 브랜치란? 브랜치 사용법 브랜치 명령어 [ 브랜치(Branch)란? ] 소프트웨어를 개발할 때에 개발자들은 동일한 소스코드를 함께 공유하고 다루게 된다. 깃은 동시에 여

devyihyun.tistory.com


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

 

 

728x90
반응형
Comments