Antilog의 개발로 쓰다
article thumbnail
반응형

이전 포스팅 이후 진행되는 내용입니다.

2019/11/09 - [Git] - [Git] 자세히 알아보기, branch, tag

 

[Git] 자세히 알아보기, branch, tag

이전 강의 내용에 이어서 진행합니다. HEAD와 master라는 기본이 되는 branch가 가진 값이 무엇인지 알고있다는 가정하에 내용을 진행합니다 2019/11/09 - [분류 전체보기] - [Git]Git 과정 자세히 알아보기, HEA..

antilog.tistory.com

rebase 란?

깃을 합병하는 또다른 방법으로는 rebase라는 방법이 존재합니다.

 

단어 그대로 re / base 즉 공통 조상커밋인 base를 다시 설정한다 해서 rebase입니다.

실습 과정을 그대로 가져옵니다.

2019/11/18 - [Git] - [Git] merge, rebase 를 위한 실습환경 만들기

 

[Git] merge, rebase 를 위한 실습환경 만들기

이전 포스팅까지 brach를 만들면 아래와 같은 상황입니다. 해당 과정을 실습으로 바로바로 볼 수 있도록 실습 파일을 만들어 확인해 봅시다. 저번 시간 히스토리 처럼 실습 파일을 만들기 위해서 아래 과정을 그..

antilog.tistory.com

만약 이전에 merge 강의로 merge 하였으면 아래와 같은 명령으로 merge를 되돌릴 수 있습니다.

$ git reset HEAD~1 --hard

해당 명령은 후에 자세하게 다루도록 하겠습니다.

 

현재 실습 파일에 히스토리는 아래와 같습니다.

만약 branch가 master인 경우 checkout으로 run으로 돌아옵니다

merge가 현재 branch에 합병할 branch를 합치는 것이면

rebase는 현재 branch를 합병할 branch로 다시 base 설정하여 합치는 것이기 때문입니다.

 

여기서 rebase를 하게되면 merge에서 base였던 734ba79를 10c0753으로 변경하게 됩니다.

즉, base의 내용을 master가 가지고 내용을 추가하고 branch에서 추가 내용이 있다면 그걸 master에 붙여서 내용을 통합하는 것인데...

아래와 같은 과정으로 진행됩니다.

먼저 임시 저장소에 branch의 내용을 담아두고 임시 저장소의 내용을 master 뒤에 합병합니다.

(이 과정에서 충돌이 있으면 해당 충돌을 해결하도록 내용이 나옵니다 뒤에서 직접 확인하도록 합시다)

이렇게 붙여진 branch의 커밋을 6097e90` 이라고 하면 run branch는 6097e90`을 가리키도록 이동하면서 아래와 같은 그림이 됩니다.

그리고 이 상태에서 master와 run을 합치려면 fast-forward merge를 하면?

이렇게 변화하고 해당 run branch를 삭제하는 것으로 rebase는 merge와 다르게 히스토리를 깔끔하게 유지 할 수 있습니다.

 

직접 가지고 있던 실습 파일로 실습을 진행해 봅시다.

$ git rebase run

으로 run과 rebase를 진행하면 아래와 같이 아주 긴 문장이 올라옵니다.

대충 보면 conflict가 발생했고 add하고 continue하거나 해당 커밋을 skip하는 방법 rebase를 무시하는 방법 등 세세하게 적혀있는데,

해당 과정을 따라 진행해 봅시다.

먼저 충돌 부분을 수정합니다.

그리고 

$ git rebase --continue

하면 아래와 같이 rebase가 됩니다.

rebase의 장단점

rebase를 하면 히스토리를 아주 깔끔하게 유지 할 수 있다는 장점이 있습니다. 따라서 어떻게 코드가 변하는지 한눈에 보기 쉽습니다.

 

하지만 반대로

rebase는 merge보다 큰 위험성을 가지고 있고 준수할 내용이나 조건이 까다롭기 때문에 초급자는 사용하는 것을 비추천 합니다.

위험성에 관한 내용은 아래에서 잘 설명되어 있으므로 해당 내용을 참고해주시기 바랍니다.

https://git-scm.com/book/ko/v1/Git-%EB%B8%8C%EB%9E%9C%EC%B9%98-Rebase%ED%95%98%EA%B8%B0

 

Git - Rebase하기

.6 Git 브랜치 - Rebase하기 Rebase하기 Git에서 한 브랜치에서 다른 브랜치로 합치는 방법은 두 가지가 있다. 하나는 Merge이고 다른 하나는 Rebase다. 이 절에서는 Rebase가 무엇인지, 어떻게 사용하는지, 좋은 점은 뭐고, 어떤 상황에서 사용하고 어떤 상황에서 사용하지 말아야 하는지 알아 본다. 앞의 Merge 절에서 살펴본 예제로 다시 돌아가 보자(그림 3-27). 두 개의 나누어진 브랜치의 모습을 볼 수 있다. 그림 3-2

git-scm.com

 

반응형
profile

Antilog의 개발로 쓰다

@Parker_J_S

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...