branch란 git의 자체적인 기능으로 분기라는 뜻으로 버전 관리의 분기점을 만드는 기능이다.
아래 그림처럼 master(main) 브랜치를 중심으로 분기점을 나눠 프로젝트를 여러 프로젝트로 나눠 개발하고 다시 master(main) 브랜치로 merge 한다.
나중에 협업 환경에서 git flow라는 개념으로 main branch, release branch, develop branch, feature branch, hotfix branch 의 flow로 회사마다 조금씩은 다르지만 주로 이러한 flow를 통해 개발이 진행된다.
처음 git init 을 통해 디렉토리를 생성하면 main 혹은 master 브랜치를 통해 개발을 진행하게 된다. 여기서 추가로 branch를 생성하기 위해서는 아래 명령어를 통해서 생성한다.
git branch (새 브랜치 명)
혹은
git switch -c (새 브랜치 명)
→ 새로운 브랜치를 생성함과 동시에 전환한다.
git switch (브랜치 명)
git checkout (브랜치 명)
→ git switch 와 git checkout은 동일하게 분기의 전환을 수행한다. git switch 명령은 주로 분기 간의 개발 및 전환에 중점을 두는 반면 git checkout 명령은 완료된 작업의 커밋 대상 지정에 중점을 둔다.
git branch -D (브랜치 명)
git merge란 서로 다른 branch의 작업 내용을 하나의 branch로 병합하기 위한 명령어다.
위 사진처럼 작업자가 새로운 branch를 만들어 master(main) 브랜치로 병합하는 과정을 merge라 하고명령어는 다음과 같다.
git merge (병합할 브랜치 명)
→ main 브랜치에서 develop 브랜치를 병합하기 위해서는 main 브랜치로 전환한 후 git merge develop 명령어를 입력하면 된다.
→이 과정에서 두 브랜치가 같은 파일의 같은 곳을 수정하면 merge conflict 가 발생한다.
merge conflict 란 브랜치를 병합하는 과정에서 두 브랜치가 같은 파일의 같은 곳을 수정하여 정확히 어떻게 합쳐야 할지 결정할 수 없을 때 발생하는 개념이다.
Pull Request 란 github에 작업이 완료된 브랜치를 요청하는 브랜치에 병합해 달라고 요청을 보내는 것이다.
merge는 git의 자체적인 기능으로 로컬 저장소에서 병합을 하기 위한 명령어이다. 원격 저장소에 브랜치를 merge 하기 위한 과정이 pull request라고 볼 수 있다.
git push origin (병합하고자 하는 브랜치 명)