취미가 좋다
git rebase 간단 설명 본문
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
'개발 기타 > 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 |