브랜칭(branching) : 기존 개발중인 메인 개발 코드를 그대로 복사하여 새로운 기능 개발을 메인 개발 코드를 건드리지 않고 할 수 있는 버전 관리 기법
기존 main 브랜치에서의 작업은 유지하고 새로운 브랜치에서 자유롭게 코드를 추가, 삭제하고 기능 개발이 끝나면 main 브랜치와 합치는 과정(merge)을 거친다.
git branch
git status
git branch <브랜치 명>
Switch : 전환하다.
Git에서 Swich란 로컬에서의 작업 공간(HEAD)를 다른 브랜치로 변경하는 작업을 말한다.
git switch <브랜치 명>
git checkout <브랜치 명>
git switch -c <브랜치 명>
, -c(create)
git checkout -b <브랜치 명>
Merge : 합치다.
다른 브랜치에서 기능 개발이 끝나면 main 브랜치와 합치는 과정을 수행해야 한다.
git switch main
git merge <브랜치 명>
💡주의할 점
이론 상으로는 위에 방법으로 merge를 하지만, 실제 프로젝트를 진행할 때에는 로컬에서 브랜치를 합치기 보다는pull request
기능을 이용하여 변경 내역을 공유, 확인하고 프로젝트원들과의 상의 후에 Merge를 하는 경우가 많다!
함부로 의논없이 Merge하지 않게 주의할 것!!
실제 개발 프로젝트를 진행할 때, 브랜치를 main
, dev
(개발 진행 단계), feature
(개인 로컬 개발) 로 나뉘어 진행하는 경우가 많다. 따라서 feature
이 merge된 기록은 dev
브랜치에 남기 때문에 merge(pull request) 후에는 삭제를 권장한다.
Github에서는 pull request
가 성공적으로 마무리할 경우, 브랜치를 삭제하는 버튼이 활성화되므로 쉽게 삭제가 가능하다.
해당 내용에 관한 블로깅 링크 기입할 것!
git branch -d <브랜치 명>
Git은 원활한 버전관리를 위해 merge 되지 않은 브랜치는 삭제하지 못하도록 설정되어 있다. 그럼에도 해당 브랜치의 삭제를 원할 경우에는 git branch -D <브랜치 명>
을 사용하면 된다.
현재 위치해 있는 브랜치의 모든 커밋 히스토리 확인 가능!
git log
branchB에 없는 branchA의 모든 커밋 히스티를 확인할 수 있다.
git log branchB..branchA
해당 파일의 변경 사항(파일 이름 변경 등)이 담긴 모든 커밋을 확인할 수 있다.
git log --follow <파일 명>
branchA에 있지만 branchB에는 없는 것의 변경 내용을 확인할 수 있다.
git diff branchB..branchA