Git - 브랜치, 커밋 전략

구동엽
|2024. 7. 31. 12:12

브랜치

브랜치를 사용하는 이유는 무엇일까

브랜치를 사용하지 않고 메인 브랜치에서만 작업하면 어떤 일이 벌어질까

하나의 기능을 개발하기 위해 여러개의 커밋을 하게 된다면 기능이 완성되기 전까지 메인 브랜치의 소스코드는 불완전한 상태로 존재할 것이다.

 

협업을 하게 됐을 때, 오직 메인 브랜치에서만 작업을 한다면 내가 작업중인 파일을 누군가 건드릴 수 있게 된다.

또한 여러 기능을 개발하면서 남겨진 커밋 히스토리가 메인 브랜치에 뒤죽박죽 섞이게 될 것이다.

 

브랜치를 사용하게 된다면, 다른 브랜치에 영향을 받지 않는 독립적인 환경에서 기능을 개발하거나, 버그를 수정할 수 있다. 즉, 여러 기능을 여러 사람이 병렬적으로 개발할 수 있게 된다.

 

기능을 개발할 때 브랜치를 생성하고, 코드를 작성하며 커밋을 남긴다.

이후 기능 개발이 완료된 경우에 메인 브랜치에 머지를 하면 안전하게 기능을 개발할 수 있다.

이런 브랜치를 사용하여 새로운 기능을 개발하다가 기획이 변경되어 기능이 필요 없어졌을 때도 간단하게 브랜치만 삭제하면 된다.


Github Flow

Github Flow는 이름 그대로 github 환경에서 사용하기 적합한 브랜치 전략이다.

또한 자동화를 활용할 수 있다.

 

main 브랜치

항상 안정적인 상태어야 한다.

main의 모든 커밋은 언제 배포하든 문제 없어야하고, 언제든 브랜치를 새로 만들어도 문제가 없어야한다.

main 브랜치의 모든 커밋은 빌드가 되고, 테스트를 통과해야한다.

 

Topic 브랜치

새로운 기능을 개발할 때에는 Topic 브랜치를 main 브랜치로부터 생성한다.

Git flow의 feature 브랜치와 동일한 역할이다.

또한 별도로 hotfix 브랜치를 관리하지 않으며, 버그 수정을 진행한다.

 

topic 브랜치의 커밋은 기능이 완성되지 않았더라도 꾸준히 push한다.

꾸준히 push 해주는 이유는 구성원 모두가 끊임없이 의사소통 할 수 있게 해준다.

 

github에서는 PR(Pull Request)라는 유용한 기능이 존재한다.

개발자는 기능을 개발하는 중 언제든 상관없이 PR을 개설할 수 있다.

심지어 코드의 변경이 없더라도 아이디어를 공유하고 싶을 때에도 PR을 개설한다.

개발자들은 개설된 PR에서 토론을 하고, 코드의 특정 라인을 선택해 코멘트를 남겨 코드리뷰를 주고 받곤 한다.

 

토론과 리뷰가 끝났으면 다른 사람들의 동의를 얻고 main 브랜치에 자신의 topic 브랜치를 머지한다.

이때 자동화된 CI 빌드를 통과해야 머지가 가능하다.


Branch strategy

branch Name 설명

main 초기 세팅
develop 로컬 develop merge 브랜치
restaurant/review 기능 개발

Git workflow

  • local - feature에서 각자 기능 작업
  • 작업 완료 후 local - develop에 PR 후 merge
  • 이후 remote - develop으로 PR
    • 서로의 코드 리뷰 후 Confirm 받고 Merge
  • remote - develop에 merge될 때 마다 모든 팀원 remote - develop pull 받기

Commit Convention

  • type : subject
  • 과거 시제 사용하지 않고 명령어로 작성한다.
feat 새로운 기능 추가
fix 버그 수정
!BREAKING CHANGE api 변경이 큰 경우 (Controller router 변경 등)
!HOTFIX 급하게 치명적인 버그를 고쳐야 하는 경우
docs 문서 수정 (README file)
style 코드 포매팅, 세미콜론 누락, 코드 변경이 없는 경우
comment 필요한 주석 추가 및 변경
refactor 코드 리팩토링
rename 파일 혹은 폴더명 수정 또는 옮기는 작업
remove 파일 삭제하는 작업만 수행한 경우
test 테스트 코드, 리팩토링 테스트 코드 추가
chore 빌드 업무 수정, 패키지 매니저 수정

 

커밋 컨벤션은 아래 링크에 자세하게 나와있으니 참고해야겠다.

https://overcome-the-limits.tistory.com/entry/%ED%98%91%EC%97%85-%ED%98%91%EC%97%85%EC%9D%84-%EC%9C%84%ED%95%9C-%EA%B8%B0%EB%B3%B8%EC%A0%81%EC%9D%B8-git-%EC%BB%A4%EB%B0%8B%EC%BB%A8%EB%B2%A4%EC%85%98-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0#%EB%8C%80%EC%B6%A9-%EC%8D%BC%EB%8D%98-git-commit-message

 

[협업] 협업을 위한 git 커밋컨벤션 설정하기

들어가며 어떻게 하면 협업을 더 잘할 수 있을까 고민하며 협업에 필요한 내용들을 계속 정리하고 있습니다. 앞으로 저와 함께 협업하는 팀원분들에게 도움이 되고 싶습니다. 이 글은 Udacity Git C

overcome-the-limits.tistory.com

 

'Github' 카테고리의 다른 글

Git - git config --global 설정 [초기 세팅]  (0) 2024.12.06
Git - branch 명령어 정리  (0) 2024.07.31