linear git history

간단히 말하면, git 그래프 모양을 single branch 로 유지하는 것.

merge commit 을 허용하지 않고, 항상 rebase 또는 fast forward merge 를 사용하여

브랜치 그래프를 최대한 단순한 모양으로 유지하는 방식이다.

  • 그림으로 차이 확인 가능.

참고 : https://www.bitsnbites.eu/a-tidy-linear-git-history/

** 좀 오래된 글이라 github 관련 내용은 맞지 않습니다.

github 에 Rebase and merge 옵션이 이미 추가되었습니다.

https://github.blog/2016-09-26-rebase-and-merge-pull-requests/

장점

한마디로, history 트래킹을 잘(쉽게) 하기 위함이다.

아마도 별로 사용할 일은 없지만 git bisect 도 가능하다.

원인을 알기가 매우 어려운 문제점이 있을 때, 이 문제가 어느 시점에 발생하기 시작했는 지를 추적하기 비교적 쉽다.

git revert 등도 쉽게 사용할 수 있다.

문제점

이 방식은 gitflow 와 충돌한다.

master 브랜치에서 배포한 특정 시점(tag)에서 hotfix 를 해야할 경우가 발생하면

필연적으로 merge commit 이 발생하기 때문입니다.

so, how ?

master 브랜치에 linear history 를 항상 유지하기 어렵기 때문에

고민 끝에 master 에서 작업을 하는 경우는 거의 없으므로 master 브랜치에 대해서는 linear history 를 포기하고,

develop 브랜치만 최대한 아름답게 유지하기로 결정.

Written on July 2, 2020