git을 잘 쓰기 위한 브랜치 사용법
- main이나 develop등 공용 브랜치에 커밋을 하지 않는다 → feature 브랜치로 따로 따서 작업한다.
git checkout -b "feature/NUM"
- 공용 브랜치를 자주자주 pull 받아 브랜치를 최신으로 유지한다 (예를들어 develop)
- 공용 브랜치는 upstream으로 지정한다
git remote add upstream [URL]
git pull upstream [공용브랜치]
git push origin [공용브랜치]
- git의 커밋 흐름은 파일 단위가 아니라 커밋 기준으로 생각하면 이해가 빠르다. 커밋은 파일의 수정 단위가 아니라 논리적인 수정 단위다.
- 커밋 분기를 만들면 골치 아프다. 하나의 브랜치는 하나의 흐름으로 가는게 좋다. (아니면 브랜치를 새로 따든가)
git 브랜치 전략
브랜치의 종류
- main/master : release에 문제가 없으면 merge되는 브랜치
- hotfix : master에서 급하게 고쳐야 하는 핫픽스성 브랜치. master로 합쳐진다.
- release : stable 브랜치로 develop이 merge되는 브랜치. 뒤에 날짜를 붙여서 많이 씀
- develop : feature들의 모임 feature에서 branch하는 대상.
- feature/[ISSUE_NUMBER] : 기능 단위의 이슈들 모임
브랜치의 흐름
- feature → develop → release → main/master
로컬 머지
git checkout -b release/20210624
git merge develop
git push upstream release/20210624
- 이렇게 하면 release 브랜치에 develop을 가지고 와서 붓는 것이다. (git은 착해서 pull만 한다.)
git이 꼬였을 때
- 커밋이 꼬여서 커밋 분기가 생겼을 때 침착하게
git log
로 커밋 해시를 복사한다. git reset HEAD~n
으로 돌아간다. – 돌아가는 시점은 분기되기 전 커밋으로 돌아가야 한다.- cherry-pick으로 원하는 커밋만 가져와서 현재 브랜치에 적용한다. 읽어볼만한 글
- 해피해피하다.