개발자들이 협업하기에 최적의 툴, 소프트웨어 개발 시 동일한 소스코드를 함께 공유하고 다룬다.
(버그를 수정하거나, 새로운 기능을 만들어 추가한다.)
기존의 소스 코드를 해치지 않으면서 다른 작업을 시도해보고 싶을 때 브랜치 기능을 활용할 수 있습니다. (feature) 브랜치에서 완성한 코드를 기존 소스 코드에 반영해도 문제가 없다면 그 때 병합(merge)할 수 있습니다.
브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념
master 또는 main 이라는 이름을 가진 통합 브랜치에 뿌리를 두고, 각각의 브랜치가 갈라져 나온다.
나누어진 브랜치에서는 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있습니다. 분리된 작업 영역(브랜치)에서 변경된 내용들은 다른 브랜치와 병합(merge)해 새로운 하나의 브랜치로 모을 수 있습니다.
여러명이 동시에 작업을 할 때 다른 사람의 작업에 영향을 주지 않도록, 자신의 작업 전용 브랜치를 만듭니다. 작업 진행 후 통합 브랜치에 병합해 변경 사항을 적용합니다. 이를 통해 다른 브랜치의 작업에 영향을 받지 않고 독립적으로 수행해 그 결과를 모아나가게 됩니다.
배포될 소스 코드가 기록되는 브랜치
Github Repository를 생성하게 되면 기본적으로 main 브랜치가 생깁니다.
(해당 프로젝트의 모든 기능이 정상적으로 작동하는 상태의 소스코드를 담습니다.)
기능 추가, 버그 수정과 같은 작업을 위한 브랜치
피처 브랜치의 작업이 완료되면 통합 브랜치에 병합하는 방식으로 진행됩니다.
git branch (새로운 브랜치 이름)
git switch -c (새로운 브랜치 이름)
git checkout -b (새로운 브랜치 이름)
git branch
git branch -v
git branch -d (삭제할 브랜치 이름)
git branch -d
// 삭제할 브랜치 이름을 입력하지 않는 경우 현재 사용 중 브랜치를 강제 삭제하게 됩니다. (주의)
git checkout master
git merge dev
// master 브랜치로 전환 후, merge dev를 통해 병합한다.
git log --branches --graph --decorate
git stash
Remote에 생성한 프로젝트 Repository를 각자의 Repository로 가져오기
(Fork를 통해 각자의 Repository로 가져오고, git clone 명령어를 통해 local로 가져올 수 있습니다.)
=== git switch -c (새로운 브랜치 이름)
브랜치를 생성하고 생성한 브랜치로 이동하기
기본적으로 개발을 진행하는 과정에서 main 브랜치가 아닌 dev 브랜치를 하나 만들어 작업을 하는 경우가 많습니다.
새로운 브랜치로 이동 후 Remote Repository에 반영하기 위해 git push origin (새로운 브랜치 이름) 명령어를 입력해 줘야 합니다.
브랜치가 잘 생성됐는지 확인 할 수 있는 방법입니다.
git branch
를 통해서 branch를 확인 할 수 있고 q를 눌러서 종료할 수 있습니다.
merge(병합) 하기 위해서는 병합 될 브랜치로 이동해야 합니다.
feature/login 브랜치에 feature/login-oauth를 병합시키기 위해 login으로 이동 후
git merge feature/login-oauth
명령어를 통해서 병합합니다.
ex) login 브랜치에 변화가 있는 경우
만일 login 브랜치에 변화가 있는 경우 login-oauth에 병합하는 방법도 있습니다.
브랜치를 login-oauth로 이동 후 병합 할 수 있습니다.
변경 내용의 이력이 모두 남아 있기 때문에 이력이 복잡해집니다.
merge처럼 통합을 목적으로 하지만, 특정 시점으로 브랜치가 가리키는 곳을 변경합니다.
(다른 커밋에서 충돌이 없는 경우 가능하다.)
git push origin feature/login
Remote Repository에 업로드하기 위해서는 push 해야 한다.
하지만 feature/login은 main이 아니기 때문에 코드 리뷰 후 변경사항을 Pull Request 해야 합니다.