TIL50 | Git Workflow & Rebase
2021. 11. 17. 09:47ㆍ프로그래밍/기타등등
반응형
Git Workflow
Git-flow 전략
- 5가지 종류의 브랜치가 존재한다.
- 항상 유지되는 메인 브랜치 : master, develop
- 일정 기간 동안만 유지되는 브랜치 : feature, release, hotfix
- master : 제품으로 출시될 수 있는 브랜치
- develop : 다음 출시 버전을 개발하는 브랜치
- feature : 기능을 개발하는 브랜치
- release : 이번 출시 버전을 준비하는 브랜치
- hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치
Git Rebase
Merge
- 불필요한 merge commit이 생성된다.
- 모든 feature branch마다 "merge commit"이 남기 때문에 branch history가 지저분해지기 쉽다.
- "merge commit"자체는 시점과 누가 merge했는지 정도만 알지 중요한 정보는 없다.
- main 브랜치에 다른 브랜치들의 commit이 남아있어서 지저분하다.
- 독립된 브랜치에서 로직 하나를 작성하고 수정하더라도, 다른 작업과 그 내역이 겹쳐 구분하기 어렵다(프로젝트의 history가 복잡해진다.)
Rebase
불필요한 merge commit이 없다.
브랜치 별로 commit이 유지될 수 있도록 한다.(합쳤을 때 섞이는 것이 아님)
commit의 base를 변경하여, commit history를 일렬로 잘 정리해준다. (줄 지어서 연결되는 느낌)
# 해당 브랜치의 base commit을 확인하는 방법 > git merge-base main feature/sign-in
그 외 명령어
# rebase가 끝나지 않았을 경우 rebase 진행하기 전으로 돌아감 (트랜잭션과 비슷) > git rebase abort # rebase가 끝났는데 돌아가고 싶을 때 > git reset --hard
Merge vs Rebase
브랜치 병합을 다른 방식으로 한다.
merge는 merge commit이 생성된다.
rebase는 commit이 너무 많거나 복잡해져서 줄이고 싶다면 commit을 squash해주는 squash옵션을 사용해서 commit을 줄일 수 있다.
git rebase -i main
반응형
'프로그래밍 > 기타등등' 카테고리의 다른 글
우분투에서 깃허브 자동 로그인 설정 (0) | 2021.12.12 |
---|---|
TIL23 | Git & GitHub (0) | 2021.10.15 |
[Linux] Linux 파일 구조 & Terminal 명령어 (0) | 2021.10.12 |
[Ubuntu 18.04] 맥분투를 만들어봅시다 ! (0) | 2021.09.27 |
애자일 프로세스 모델(애자일 방법론) (0) | 2021.06.27 |