본문 바로가기

Git,Github

Git Rebase 알아보기

깃 지옥 해결법

 

물론 현업이 아닌 4~5명정도의 소규모 프로젝트에서는

사실 깃 지옥이랄것도 없지만... 

 

만약에 그 이상, 그리고 다양한 개발자가 함게 참여한 

깃 히스토리를 본 적이 있는가?

 

 

Javascript 개발자들의 영원한 적

Git 판 콜백지옥이라고 봐도 무방하다(...)

 

Merge는 이른바 머지 커밋이 생성되는데, 이게 모두 깃 히스토리에 올라가니

굳이 머지했다는 커밋은 필요없지 않나? 에서 나온게 바로 리베이스이다.

 

Re + Base 즉 베이스를 다시 설정했다는 뜻이다.

 

위의 'B'커밋이 D와 E커밋의 Base인데,

이 베이스를 다시 C로 설정하여 본래 브랜치 위에 D* E* 브랜치를 얹어버린것이라고

생각하면 쉽다

 

이때 D*와 E*의 해시값 역시 변경된다. (다시 베이스를 재설정한 것이므로)

 

이러한 장점이 있지만, 당연하게도 이 기능은 주의를 해야 한다.

우선, 혼자 작업하는게 아닌 Remote repo로 작업중일때는 사용에 신중해야 한다.

 

커밋이 꼬이는 대참사가 벌어질 가능성이 대단히 높기 때문이다.

 

거기에 개발자가 10~15명이 붙어서 작업하는데 마구 리베이스를 해대면...

그 프로젝트는 그냥 처음부터 하는게 나을수도 있다.

 

크게 3가지를 명심하고 리베이스 기능을 사용해야 하겠다

 

1. 리베이스를 하려는 브랜치 끝에서 백업용 브랜치를 만들어 놓자

(대형사고 예방용)
2. 소규모의 팀일수록 위험이 적음

3. 팀이나 회사 정책에 순응(?) 하자

(실제 회사에 따라 Merge대신 Rebase사용을 권장하는 팀이 있다고 한다)