티스토리 뷰

Git

base와 rebase

돈파치 2021. 10. 4. 18:11
반응형

base

rebase라는 개념을 알기 위해서는 우선 base의 개념을 짚고 넘어 가야 한다.

base란 예를 들어 a브랜치에서 새로운 브랜치 B가 생성되었을 경우 B 브랜치가 생성되는 곳인 a브랜치의 최신 버전을 의미한다.

위처럼 b 브랜치가 생성되었을 때 b 브랜치의 base는 a3라는 것이다.

 

rebase

A 브랜치에서 생겨난 B브랜치가 있을 때 b브랜치의 base를 a브랜치의 최신 버전으로 바꾸는 것을 의미한다.

B브랜치를 보면 a브랜치의 최신버전 위에 B브랜치의 최신버전이 놓여있는 것을 다음 이미지처럼 확인할 수 있다. 

즉 B브랜치의 base였던 a3가 이제 a4로 바뀐 것이다.

B브랜치를 rebase를 할 경우 베이스가 바뀔 브랜치인 B브랜치에 위치한 다음(B로 checkout한다.) git rebase 새로운 base가 있는 브랜치(여기서는 A브랜치)을 입력한다.

이를 통해 rebase가 완료된다.

 

한편 이때 충돌이 일어나서 rebase를 실패할 경우 다음과 같이 해결할 수 있다.

1. 우선 충돌난 부분을 수정해준다.

2. add를 해준다.

3. git rebase --continue

merge의 경우 충돌이 나면 충돌난 내용을 수정 후 add 및 커밋을 했다.

그러나 rebase는 add 후 git rebase --continue로 중단된 rebase를 이어가면 된다.

4. 그럼 이제 rebase가 완료된다.

 

5. rebase 후 B브랜치를 생성한 A브랜치를 B브랜치의 최신 버전과 같이 최신화를 시키기 위해 fast-forward시키는 방법은 다음과 같다.

git checkout a
git merge rebase를 한 브랜치명 #여기선 b브랜치

 

git pull --rebase와 git pull

git pull --rebase는 도대체 git pull과 뭐가 다를까?

git pull <원격 저장소 별명><리모트 브랜치명>은 원격 저장소로부터 새로운 커밋을 내려받는 것만을 의미한다.

git pull --rebase <원격 저장소 별명><리모트 브랜치명>는 git fetch 와 git rebase <원격 저장소 별명><리모트 브랜치명> 이 두 명령을 직접 순서대로 실행한다는 의미이다.

반응형

'Git' 카테고리의 다른 글

협업 관리  (0) 2021.10.04
백업관리2  (0) 2021.10.04
백업 관리1  (0) 2021.10.04
브랜치 관리  (0) 2021.10.04
버전 삭제 및 되돌리기  (0) 2021.10.04
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함
반응형