Git-flow 브랜칭 전략
• Vincent Driessen이 제안
• 목적에 따라 브랜치를 분리하는 모델
• master branch: 배포 버전
• develop branch: 개발 버전
• 배포와 연관 지었을 때 강력한 힘을 발휘
• Git-flow를 설치해서 쓰면, 브랜치 삭제/병합을 쉽게 해 줌
장점
• 가독성 향상
• feature → develop 머지 커밋 == 새로운 기능이 있구나
• 작업 내용은 feature branch로 격리되어 다른 코드와 섞이지 않음
• 효율 향상
• 브랜치의 역할이 정해져 있기 때문에 Hook등을 걸기 쉬움
• hotfix 작업시 실수 방지
장점
• 머지 그래프가 예쁘게 유지
• 작업 도중에 최신 내용을 가져 와 머지하는 순간 무지개에 가까워 짐..
• 충돌 발생시 기능 작업자가 인지, 처리 가능
• 코드 리뷰 향상
• 긴 기능의 작업을 피하게 됨
• 오래 된 기능 브랜치 일수록 충돌 날 확률이 올라감
• 개별 기능은 짧게 쪼개어 작업하는 원칙에도 OK
왓 스튜디오에서는
• Git-flow
• release 브랜치에 Hook을 활용
• 커밋이 올라오면 자동 빌드, 테스트, 배포
• Forward-porting
• 로그 그래프로 작업된 기능을 한 눈에 파악 가능
• 머지 했을 때, 타인의 코드에 트롤링(?)할 여지 방지
다음 상황에 적절
• 작업 디렉토리를 통째로 바꿔야 하는 경우
• 브랜치를 바꿔야 한다거나, 브랜치를 바꿔야 한다거나…
• stash할 순 있는데, untracked 파일도 꽤 있고…
• 현재 작업 상태를 보존하고 싶을 경우
다음 상황에 적절
• 작업 디렉토리를 통째로 바꿔야 하는 경우
• 브랜치를 바꿔야 한다거나, 브랜치를 바꿔야 한다거나…
• stash할 순 있는데, untracked 파일도 꽤 있고…
• 현재 작업 상태를 보존하고 싶을 경우
worktree는 여러 개의 작업 트리를 관리할 수 있게 해 줌
$ git grep
• 평소에 많이 쓰는 그 grep과 유사
• blob object 검색이라고 생각하면 쉽다.
• 파일과 위치를 알 수 있음
• $ git grep blahblah
• -- 구분 기호로 경로를 제한할 수 있음
• $ git grep blahblah -- Document
$ git grep hello
# -- 구분 기호로 경로를 제한할 수 있음
$ git grep hello -- subdirectory