Git branch
Git branch
- 브랜칭(branching)은 기존 개발 중인 메인 개발 코드를 그대로 복사하여 새로운 기능 개발을 메인 코드를 건드리지 않고 할 수 있는 버전 관리 기법
- 처음에 GIt Repository를 생성하면 나오는 mian 브랜치에서만 작업을 하다가 새로운 기능 개발을 위해 feature 브랜치를 새로 생성하는 경우, 기존 main 브랜치에서의 작업은 유지하고 새로운 feature 브랜치에서 자유롭게 코드를 추가 및 삭제할 수 있음
브랜치 생성하기 / 변경하기 (git switch)
- 새로운 브랜치로 Git이 바라보는 곳, HEAD를 변경하는 작업을 switch라고 부름
- 브랜치를 생성할 때는 생성(Create)의 의미로 -c를 붙여줘야 하고, 기존에 있는 브랜치로 옮길 때는 붙이지 않아도 됨
# feature라는 브랜치를 새로 생성하는 경우, -c를 붙임
git switch -c feature
# checkout이라는 명령어를 사용해도 됨
git checkout -b feature
# 기존에 있던 mian 브랜치로 HEAD를 변경하려면 -c를 붙이지 않음!!
git switch main
git checkout main
브랜치 합치기 (git merge)
- 기능 개발이 끝나면 브랜치를 main 브랜치와 합칠 수 있음
# 기능 개발이 진행되었습니다.
git commit -m "기능1의 세부 기능1"
git commit -m "기능1의 세부 기능2"
git commit -m "기능1 개발 완료"
# merge를 위해 main 브랜치로 전환
git switch main
# main 브랜치로 feat/todo 브랜치를 병합
git merge feat/todo
- 실제 프로젝트 개발 시에는 브랜치를 로컬에서 합치기 보다는 Github의 pull request 기능을 사용하여 변경 내역을 충분히 확인한 후 merge하는 경우가 많음!
- 로컬에서 merge하지 않고 feature 브랜치를 push하여 pull request를 요청하는 것을 권장함
# 기능 개발이 진행되었습니다.
git commit -m "기능1의 세부 기능1"
git commit -m "기능1의 세부 기능2"
git commit -m "기능1 개발 완료"
# Github 리포지토리로 푸시
git push origin feat/todo
# Github에서 Pull Request를 함
브랜치 삭제하기 (git branch -d)
- Merge된 feature 브랜치는 이미 dev 브랜치에 기록이 완벽하게 남아 있기 때문에 굳이 남겨둘 이유가 없어 삭제를 권장함
- 원격 리포지토리에서 pull request가 성공적으로 마무리되면 삭제하는 버튼을 눌러 쉽게 삭제 가능
- 로컬 리포지토리에서 브랜치 삭제는 git branch -d <브랜치명> 으로 가능
- Git은 원할한 버전 관리를 위해서, 브랜치가 합쳐지지 않으면 삭제하지 못하도록 설정되어 있음
→ 하지만 종종 다 만들지 못한 기능의 기록을 삭제하고 싶을 때는 -D 옵션을 사용하면 삭제할 수 있음
git branch -D feat/todo
- 다만, merge 되지 않은 브랜치 삭제는 버전 기록 시스템의 사용 목적과 잘 맞지 않음 → 잘못 만들었던 기능이지만 해당 기능으로 돌아가고 싶을 수도 있기 때문에 여지를 만들어 주는 것이 좋을 수도 있음
* git switch branch - Easily checkout git branches with this new commad