git은 프로젝트 파일을 변경 사항을 추적하는 시스템이며,
github은 프로젝트에 필요한 모든 파일과 코드의 히스토리를 함께 공유하는 호스팅 서비스다.
2주 동안 프로젝트를 진행해보니, 생각보다 많은 branch, PR, 그리고 commit message가 쌓인 것을 확인할 수 있었다.
그동안 우리 굉장히 열심히 했구나... 라고 느낄 수 있었지만, 한편으로는 과연 history를 제대로 파악할 수 있을까? 라는 의구심이 들기 시작했다.
이에 대한 해결책으로 git flow & rebase를 들수 있다.
The Gitflow Workflow defines a strict branching model designed around the project release. This provides a robust framework for managing larger projects. [출처]
협업하는 개발자가 프로젝트의 history를 원활하게 파악하기 위해서는 rebase 작업이 필요하다. 다양한 branch에서 작업들이 이루어진다면 불필요한 merge commit이 발생하고, 그렇다면 github의 효율성을 낮추기 때문이다.
Rebase는 내 commit의 base를 변경하여, commit history를 일렬로 잘 정리해줍니다.
- 해당 브랜치의 base commit을 확인하는 방법 :
git merge-base main branchname
새로운 작업을 마친 후 push 하기 전, main(master) branch에서 pull 받는다.
git checkout main
git pull origin main
작업한 branch로 이동하여 git rebase -i main
squash : use commit but meld into previous commit
가장 오래된 commit message를 pick하고 나머지는 squash. 그후 esc + :wq!
최종적으로 rebase된 commit message를 수정하는 과정. 현재까지의 작업 내용을 정리하여 작성한다. 그후 esc + :wq!
commit message 수정 : git commit --amend
git log
로 확인 후 최종 push! git push origin branchname -f