2023. 4. 12. 12:04ㆍ기타
Git branch
브랜칭(branching)은 기존 개발중인 메인 개발 코드를 그대로 복사하여 새로운 기능 개발을 메인 개발 코드를 건드리지 않고 할 수 있는 버전 관리 기법입니다. 처음에 GitHub Repository를 생성하면 나오는 main 브랜치에서만 작업을 하다가 새로운 기능 개발을 위해 feature 브랜치를 새로 생성하는 경우, 기존 main 브랜치에서의 작업은 유지하고 새로운 feature 브랜치에서 자유롭게 코드를 추가 및 삭제할 수 있습니다.
브랜치 생성하기 / 변경하기 (git switch)
이 때, 새로운 브랜치로 Git이 바라보는 곳, HEAD를 변경하는 작업을 switch라고 부릅니다. 브랜치를 생성할 때는 생성(create)의 의미로 -c 를 붙여줘야 하고, 기존에 있는 브랜치로 옮길 때는 붙이지 않아도 됩니다.
# feature라는 브랜치를 새로 생성하는 경우, -c를 붙입니다.
git switch -c feature
# checkout이라는 명령어도 사용할 수 있습니다.
git checkout -b feature
# 기존에 있던 main 브랜치로 HEAD를 변경하려면, -c를 붙이지 않습니다.
git switch main
git checkout main
# 프로젝트 레포지토리에 백엔드와 프론트엔드 브랜치를 만들었다.
git switch -c frontend
# checkout이라는 명령어도 사용할 수 있다.
git checkout -b backend
브랜치 합치기 (git merge)
기능 개발이 끝나면 브랜치를 main 브랜치와 합칠 수 있습니다.
하지만 이방법은 팀 프로젝트에서는 권장하지 않습니다.
# 기능 개발이 진행되었습니다.
git commit -m "기능1의 세부 기능1"
git commit -m "기능1의 세부 기능2"
git commit -m "기능1 개발 완료"
# 머지를 위해 main 브랜치로 전환
git switch main
# main 브랜치로 frontend 브랜치를 병함
git merge frontend
실제 프로젝트 개발 시에는 브랜치를 로컬에서 합치기 보다는 GitHub의 pull request 기능을 이용하여 변경 내역을 충분히 확인하고 난 다음에 머지하는 경우가 더 많기 때문에, 로컬에서 머지하지 않고 feature 브랜치를 push하여 pull request를 요청하는 것을 권장합니다.
# 기능 개발이 진행되었습니다.
git commit -m "기능1의 세부 기능1"
git commit -m "기능1의 세부 기능2"
git commit -m "기능1 개발 완료"
# GitHub 리포지토리로 푸시합니다.
git push origin frontend
# GitHub에서 Pull Request를 합니다.
브랜치 삭제하기 (git branch -d)
로컬 리포지토리에서 브랜치 삭제는 git branch -d <브랜치명> 으로 할 수 있습니다.
git branch -d feat/todo
Git은 원활한 버전 관리를 위해서, 브랜치가 합쳐지지 않으면 삭제하지 못하도록 설정이 되어있습니다. 하지만 종종 다 만들지 못한 기능의 기록을 삭제하고 싶을 수 있습니다. 이 때 -D 옵션을 쓰면 삭제할 수 있습니다.
git branch -D feat/todo
다만, 머지되지 않은 브랜치 삭제는 버전 기록 시스템의 사용 목적과는 잘 맞지는 않습니다. 잘 못 만들었던 기능이지만, 해당 기능으로 돌아가고 싶을 수도 있기 때문에 돌아갈 여지를 만들어두는게 좋을 수도 있습니다. 이런 경우는 팀 및 회사 정책에 따르는 것을 권장합니다.
'기타' 카테고리의 다른 글
[react-dropzone]비디오 믹싱페이지에 드래그 앤 드랍 적용해보기. (0) | 2023.05.24 |
---|---|
Recoil로 상태관리 시작하기 (0) | 2023.05.09 |
프로젝트 시작 전 Git hub 학습 (0) | 2023.04.12 |
원티드 프론트엔드 프리온보딩 : React [2주차] (0) | 2023.04.10 |
객체 지향 프로그래밍 (OOP) (0) | 2023.03.27 |