branch를 사용하지 않아도 협업은 가능함
영리한 git은 커밋 순서로 인해 push가 거부(reject)될 때, pull을 받은 뒤 다시 push하면 커밋 순서를 정리한 뒤 병합(merge)함.
하지만❗같은 파일의 같은 라인의 코드를 건드린다면 골치 아픈 conflict(충돌)이 발생❗→ 개발자는 conflict를 직접 해결해줘야 함!
이러한 불편한 점을 해결하기 위해 branch라는 개념이 등장
(branch의 핵심 아이디어)

merge(병합): 여러 개의 서로 다른 독립된 공간(브랜치)에서 개발된 코드를 하나의 브랜치로 합치는 것.
위의 사진에서는 c 커밋을 기점으로 새로운 브랜치인 gitrini를 만들어 각자 따로 작업 한 뒤 합치고 있음.
이때도 같은 파일의 같은 라인을 수정했다면 conflict 해결을 해줘야 함.
Github에서 merge를 요청하는 것을 PR(Pull Request)이라 부름.
PR이 승인되면 브랜치가 합쳐지며 merge가 완료됨.
branch 생성 및 이동
$ git branch
# 현재 생성되어 있는 브랜치의 목록을 본다
$ git branch newFeature
# newFeature라는 새로운 브랜치를 만든다.
$ git checkout(switch) newFeature
# newFeature라는 브랜치로 이동한다.
$ git checkout -b newFeature
-> (git branch newFeature + git checkout newFeature)
# newFeature라는 브랜치를 만들고 이동
$ git checkout commit_id -b new_feature
-> (git checkout commit_id + git branch new_feature + git checkout new_feature)
# 특정 커밋 시점(commit_id)으로 이동 후, 그 커밋에서 new_feature 브랜치 생성
branch 삭제
$ git branch -D newFeature
# newFeature라는 브랜치를 삭제한다.
github에 특정 branch를 push하거나 github에서 특정 branch를 가져오기
$ git push origin 브랜치이름
# 특정 브랜치를 깃허브에 푸시한다.
$ git pull origin 브랜치이름
# 브랜치를 깃허브에서 가져와서 최신화한다.
인용 자료 출처
코딩은 실전이다! - Git알못을 위한 깃린이코스(Git, Github 실습위주)
(무료) 매우쉽게 알려주는 git & github