Git

Rebase

BKM 2023. 2. 21. 17:45

[관련내용]

https://sdsf1225.tistory.com/51

 

Error- 23.02.21

공부한 내용을 Remote에 Push하기 위해 commit하고 push를 하니 해당 에러가 발생하였다. 시도한 방법 Local과 Remote 브랜치의 HEAD위치가 맞지 않는 것 같아 "git pull" 수행 pull을 하고 나니 분기된 branch가

sdsf1225.tistory.com

 

Git에서 한 브랜치에서 다른 브랜치로 합치는 방법은 2가지가 있다.

1. Merge

2. Rebase

Rebase란?

한 브랜치에서 변경된 사항을 다른 브랜치에 적용시키는 방법

 

내부에서 실제로 일어나는 일

1. 브랜치가 나뉘기 전인 공통의 커밋으로 이동

2. 해당 커밋부터 지금 checkout한 브랜치가 가리키는 커밋까지 diff를 차례로 만들어 임시로 저장

3. Rebase할 브랜치(Experiment)가 합칠 브랜치(Master)가 가리키는 커밋(C3)을 가리키게 하고 저장해 놓았던 변경사항을 차례로 적용

4. Fast-Forward

Merge나 Rebase나 내용상으로는 서로 같은 결과가 나오지만 Rebase가 좀 더 깨끗한 commit history를 만든다.(Merge commit 기록이 남지 않기 때문에)

따라서 Rebase는 보통 remote branch에 커밋을 깔끔하게 적용하고 싶을 때 사용!

 

*Rebase의 또다른 활용법

main Branch 에서 분기된 하나의 topic branch에서 또 다시 분기된 secondary topic branch가 있을 때, 기존의 topic branch는 그대로 유지한 채 secondary branch를 main branch로 합칠 수 있다.

master -> server -> clien로 분기된 브랜치
'server'브랜치는 놔두고 'client'브랜치의 commit만 'master'로 합치기

Rebase를 사용할 때의 주의사항

이미 공개 저장소에 Push 한 커밋을 Rebase 하지 마라!

 

더욱 자세한 내용은 해당 자료를 참고

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

 

Git - Rebase 하기

Rebase는 기존의 커밋을 그대로 사용하는 것이 아니라 내용은 같지만 다른 커밋을 새로 만든다. 새 커밋을 서버에 Push 하고 동료 중 누군가가 그 커밋을 Pull 해서 작업을 한다고 하자. 그런데 그 커

git-scm.com

개인적인 Rebase에 대한 정리

Rebase는 commit 신분세탁이다...!