취미가 좋다

git rebase 간단 설명 본문

개발 기타/git

git rebase 간단 설명

benlee73 2023. 1. 24. 11:08

git rebase

git merge 와 같이 두 커밋을 합치는 작업이다.

git rebase 는 커밋들을 한 줄로 깔끔하게 만들고 커밋의 순서를 만들어준다는 특징이 있다.

아래 예시를 보며 쉽게 이해해보자.

 

- 왼쪽처럼 c2, c3 커밋을 각각 가리키는 bugFix, main 브랜치가 있다고 하자.

- 현재 가리키고 있는 브랜치는 bugFix 이다.

- git rebase 명령어로 2개를 합쳐보자.

 

 

 

 

 

 

 

 

 

git rebase main

- main 과 bugFix 는 따로 작업했지만 순서대로 작업한 것처럼 보이게 된다.

- 기존에 있던 c3 커밋은 없어지지 않았지만 가리키는 브랜치가 없어서 흐릿해진 상황이다.

 

- 같은 방법으로 main 을 c3' 커밋으로 옮겨보자.

 

 

 

 

git switch main
git rebase bugFix

- main 이 bugFix 의 부모에 있는 상황에서는 rebase 했을 때 자식 커밋으로 이동하는 것이 전부다.

 

- merge 는 어느쪽으로 머지해도 결국 같은 커밋이 만들어졌다.

- 하지만 rebase 는 순서에 따라 만들어지는 브랜치가 다르다.

- 더 최근에 작업한 것처럼 보여지고 싶은 커밋이 있다면 그 커밋을 가리킨 상태에서 rebase 를 해야한다.

 


git rebase -i

- 왼쪽을 오른쪽으로 바꾸는 방법이다.

git rebase -i main

- "-i" 옵션이 없을 때는 Current branch b1 is up to date. 라고 나올 것이다.

- "-i" 옵션을 붙이면 b1 과 main 사이의 커밋들의 순서를 바꾸거나 커밋을 제거할 수 있다.

 

- 위 명령어의 의미는

-> 현재 브랜치(b1)를 지정한 브랜치(main) 뒤에 붙일 것이다.

-> 그러면 c2, c3, c4 를 붙여야한다.

-> 이 커밋들을 그대로 붙일 수도 있지만 수정할 수 도 있다.

-> 제거하고 싶은 커밋은 제거하고 순서를 변경해서 붙인다.

-> 만약 c2, c3, c4 를 그대로 붙인다면 "-i" 옵션이 붙지 않았을 때와 동일하며 변경 사항 없이 현재 상태가 유지된다.

 

 

 

 

 

 

 

- 예시 하나만 더 보자.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

git rebase -i main

-> b1 브랜치를 main 뒤에 붙이자.

-> 두 브랜치의 가장 가까운 공통 부모는 c1 이다.

-> c1 부터 b1 까지의 커밋 c2, c3, c4 를 main 뒤에 붙이자.

-> 제거하고 싶은 커밋 c3 를 제거한다.

-> c2, c4 의 순서를 바꿔서 붙이자.

 

 

https://learngitbranching.js.org/?locale=ko 

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

 

'개발 기타 > git' 카테고리의 다른 글

git 되돌리기(reset, revert) 간단 설명  (1) 2023.01.29
git HEAD 간단 설명  (0) 2023.01.24
git merge 간단 설명  (0) 2023.01.24
깃 (git) 쉽고 간단한 설명  (1) 2023.01.24
GIT 3 : CLI 백업  (0) 2021.01.05
Comments