이 포스팅은 구름 에듀 강좌의 "Git으로 시작하는 협업 및 오픈소스 프로젝트" 를 기반으로 작성되었습니다.
이 강의의 강사이신 "나동빈" 님의 자료임을 밝힙니다.
상업적인 의도가 아닌, 공부한 것을 정리해놓는 목적의 포스팅입니다.
edu.goorm.io/learn/lecture/11528/git으로-시작하는-협업-및-오픈소스-프로젝트/info
@ Git -Branch
깃은 동시에 여러 개발자들이 프로젝트에서
각기 다른 기능을 개발할 수 있도록 브랜치(Branch) 기능을 제공한다.
서로 다른 브랜치는 작업 함에 있어서
서로에게 영향을 받지 않는다는 점에서 마음 놓고 서로 다른 개발 작업을 수행할 수 있다.
기본적으로 깃을 저장소로 만들면 자동으로 마스터(Master)브랜치가 생성 된다.
이 브랜치는 일반적으로 배포가 가능한 수준의 안정화된 버전을 포함하고 있는 브랜치이다.
동작과정프로젝트에서 주 버전을 마스터 브랜치라고 한다. (자동 생성된다.)
마스터 브랜치는 항상 안정화 되어 있어야 하고,
언제나 배포가 가능해야 하기 때문에 위와 같은 모든 작업을 마스터 브랜치에서 할 수가 없다.
이럴 경우 브랜치를 나누어 각기 기능에 맞게 개발을 하는 것이다.
즉 각 브랜치로 개발을 하여 마스터 브랜치에 병합을 시키는 구조인 것이다.
병합을 할 때는 Merge 가 수행된다.
Merge가 수행되기 전까지는 안정적으로 배포가 이루어지고 있다가,
모든 기능이 합쳐진 이후에 다시 배포할 수 있으므로 개발의 안정성이 매우 뛰어나 진다는 장점이 있다.
> 통합 브랜치 : 배포가 가능한 수준의 브랜치로 일반적으로 마스터(Master) 브랜치
> 토픽 브랜치 : 특정한 기능을 위해 만들어진 브랜치로 일반적으로 마스터(Master) 브랜치 이외의 다른 브랜치
@ Branch 실습
먼저 git branch라는 명령어를 입력해 현재 몇개의 브랜치가 존재하는지 확인해보자.
자동으로 존재하는 Master브랜치만 존재한다.
브랜치를 하나 추가해보자.
git branch 추가할 브랜치 명
브랜치 명 앞에 당구장 표시가 현재 내가 존재하는(?) 브랜치이다.
현재 위치를 Master branch가 아닌
새로 생성한 브랜치로 이동하고 싶다면 "checkout" 명령어를 써주면 된다.
현재 가르키고 있는 브랜치가 바뀐 것을 확인할 수 있다.
이 상태에서 소스코드를 변경해보도록 하자.
나는 새로운 test.py 를 만들었다.
def add(a,b):
return a+b
def sub(a,b):
return a-b
def mul(a,b):
return a*b
이후 git add와 git commit 으로 커밋 시켜준다.
변경 후 commit log를 확인해보면 아래와 같이 출력된다.
현재 헤드가 새로 만든 브랜치인 "develop"을 가르키고 있다.
그리고 커밋이 제대로 이루어진 것을 확인 할 수 있다.
하지만 origin 즉 원격지 주소에서는 master 를 가르키고 있다. 반영이 안된 것이다.
즉, 현재 브랜치에서만 적용이 되고 마스터 브랜치에서는 변경이 적용되지 않은 것이다.
여기서 develop브랜치의 변경 사항을 master브랜치에 합치려면 위에서 언급한 Merge를 수행하면 된다.
아래 그림과 같이 다시 master branch 를 가리키게 하고, merge 명령을 수행한다.
다시 로그를 확인해보자.
헤드가 마스터와 develop을 가르킨다. 이것은 수정된 코드를 반영하였다는 것이다.
원격지 저장소에도 수정내역을 적용하고 싶으면 git push 명령을 입력해주면 된다.
수정내역이 적용된 것을 확인할 수 있다.
모든 수정이 끝난 후 git branch를 해보면 아직 develop브랜치가 남아있다.
병합이 끝나서 역할을 다한 브랜치는 제거해주면 된다.
삭제는 -d 옵션을 이용하면 된다.
git branch -d 삭제할 브랜치 명
제거 후 브랜치 리스트를 확인해보면 처음과 같이 Master 하나만 존재한다.
'Archive > ETC' 카테고리의 다른 글
[ git & github ] Git 원격 저장소(Remote Repository) 관리 (0) | 2021.02.18 |
---|---|
[ git & github ] Git Branch 충돌(Conflict) 처리 | 브랜치 충돌 처리 (0) | 2021.02.18 |
[ git & github ] Git 에서 Commit 내역 수정하기 (0) | 2021.02.18 |
[ git & github ] Git 저장소에 코드 수정 반영하기 (0) | 2021.02.18 |
[ git & github ] Git 동작 원리 (0) | 2021.02.18 |