끄적 끄적/Git

[Git] 소스트리를 이용한 Rebase, 커밋내역 깔끔하게 정리하기

냄수 2021. 8. 3. 15:11
반응형

협업하면서 git을 이용해서 작업물을 합칠 때 

대부분 merge를 많이 사용하고 있을 텐데요

rebase라는 기능이 있다는걸 알고계신가요?!

 

프로젝트가 큰경우에 많이 쓰는거 같은데요

불필요한 커밋내역들을 깔끔하게 정리하기위해서 많이들 사용하는 방법이라고 해요

가지가 줄어들어서 확실히 보기 좋아져요

 

예시로 알아봅시다~~

이러한 작업을 한 브렌치가 있어요!

가지모양은 

 

 

main -> develop -> a

                             -> b

 

이렇습니다!

 

 

a브렌치에서 작업을 커밋했고

b브렌치에서 작업을 커밋했고

develop에서 작업을 커밋해서

커밋 시간순으로는 a -> b -> develop 브렌치 순이죠

 

 

여기서 이제 리베이스를 통해서 이쁘게 연결해 보려고해요

리베이스를 할 작업한 브렌치로 (체크아웃)이동해야해요

 

 

a브렌치를 먼저 rebase할거니까

a로 체크아웃해주세요!

 

그리고 

붙이고싶은 부모 커밋에 오른쪽버튼 >> 재배치

를 누르면!

 

커밋 내역이 이와같이 변경된 것을 볼 수 있어요

 

"dev작업물"이 시간상 가장 최신의 커밋내역인데

rebase시켜서 develop브렌치 뒤로 a브렌치에서 한 작업물이 뒤로 오도록 변경됬고

시간도 현재시간으로 변경된 것이 보이네요

 

가지수도 줄어든 것이 보이죠??

노란색 가지가 사라졌어요

 

마무리로

부모브렌치로 체크아웃하고(dev로 이동)

a브렌치를 dev브렌치로 병합시켜주면

깔끔한 병합처리가 끝나요!

 

 

다 쓴 브렌치는 삭제해주면

깔끔해졌죠

 

만약 merge를하면 어떤 부분이 다른가??

볼까요

 

b브렌치를 merge시키려면

부모브렌치로 체크아웃하고

병합처리해주면 끝나요

 

그래프가 줄어들지 않았구요

 

브렌치를 삭제해도

이렇게 가지가 살아남아 있기때문에

많은 브렌치를 사용한다면 많은 가지를 볼 수 있겠죠? ㅎㅎ

 

 

가지수를 줄이는 것말고도

장점이있죠

커밋내역을 합쳐서 간결하게

보일 수도 있어요

 

예를들어

충돌해결1

충돌해결2가 있는데

이두개를 하나의 충돌해결 커밋으로 합쳐서

보일수 있는거죠

 

우선 합치고자 하는 아래의 커밋을 누르고

오른쪽버튼을 누르면

하위요소 재배치가 있습니다

이 부분이

터미널에서 하는

git rebase -i 를 해서 나오는 커밋내역을 정리하는 기능? 이라고

생각하면 될 것같네요

 

아무튼 이버튼을 누르면

이런 창이보일겁니다

 

합치고 싶은 커밋을 클릭하고

이전 것과 합치기를 눌러주면

(현재 클릭된 아래의 커밋과 합쳐집니다)

 

하나의 커밋으로 묶이고

메시지 편집을 눌러서

커밋메시지를 변경 할 수 있어요

충돌해결묶음으로 변경했구요

마지막으로 확인을 누르면

 

충돌이 났고...

보니까

저기능에서 b가 포함되어있어서

b브렌치 내용들도 재배치를 해버리나봐요

그래서 충돌이 나서 다시 해결을 해줬고

아래와 같이 1줄로 정리 됬네요

 

 

 

 

 

요약하자면

 

dev브렌치에서 각각 피쳐별로 기능구현한 브렌치를 두고

작업한 브렌치에서 dev커밋내역에 재배치를 누르고

dev로 체크아웃해서 merge하고 작업한 브렌치를 삭제

해서 정리하고

다음 작업브렌치를 다시 위와같은 과정으로 rebase해나가면

일렬로 정렬된 커밋내역을 확인 할 수 있어요

 

정리된 커밋내역에

하위요소 재배치를 이용해서

커밋내역을 정리해버릴 수 도 있구요

 

반응형