git 의 rebase 명령은 브랜치에서 다른 브랜치로 커밋을 옮기거나, 커밋의 순서를 변경하는 등의 작업에서 사용된다.
주로 커밋 히스토리를 깔끔하게 관리하고자 할 때, 코드를 최신 상태로 유지하며 작업할 때, 다른 개발자들과 협업할 때 등에서 사용된다.
사용법 >>
브랜치 히스토리 변경 >>
feature 브랜치가 main 브랜치에서 분기되었다면, feature 브랜치에서 git rebase main 명령을 실행하면, feature 브랜치의 시작점을 main 브랜치의 최신 커밋으로 옮긴다.
이 과정에서 feature 브랜치의 커밋들이 새로운 기준점에서 다시 적용된다.
예시:
Main 브랜치: A -- B -- C
\
Feature 브랜치: X -- Y -- Z
여기에서, Feature 브랜치에서 git rebase main 명령을 실행하면, Feature 브랜치의 커밋들(X, Y, Z)이 Main 브랜치의 최신 커밋(C) 위로 옮겨진다.
Main 브랜치: A -- B -- C
\
Feature 브랜치: X' -- Y' -- Z'
Feature 브랜치의 커밋들 (X', Y', Z')은 Main 브랜치의 최신 상태를 반영하게 된다.
커밋 합치기(squash) >>
여러 커밋을 하나의 커밋으로 합치고 싶을 때, rebase 를 사용할 수 있다.
프로젝트의 히스토리를 깔끔하게 유지하는데 도움이 된다.
예시:
Main 브랜치: A -- B -- C -- D
\
Feature 브랜치: X -- Y -- Z
여기에서, Feature 브랜치에서 'git rebase -i HEAD~3' 명령을 실행한다.
(Head~3 은 Feature 브랜치에서 마지막으로 3개의 커밋을 선택하겠다는 의미)
명령을 실행하면 편집기가 열리면서 다음처럼 된다.
pick X 커밋 메시지 X
pick Y 커밋 메시지 Y
pick Z 커밋 메시지 Z
커밋 합치기(squash)를 하기 위해 pick 을 squash 로 변경한다.
pick X 커밋 메시지 X
squash Y 커밋 메시지 Y
squash Z 커밋 메시지 Z
편집기를 종료하면 새로운 편집기 창이 열리면서 커밋 메세지를 편집할 수 있다. 합쳐진 커밋 메시지를 원하는대로 작성하고 저장한다.
그러면 다음처럼 git 구조가 변경된다.
Main 브랜치: A -- B -- C -- D
\
Feature 브랜치: X -- M
여기에서 M은 Y와 Z 커밋이 합쳐진 커밋을 나타낸다.
이렇게 여러 개의 커밋을 하나의 커밋으로 합쳐서, 프로젝트의 히스토리를 깔끔하게 유지할 수 있다.
커밋 순서 변경 >>
rebase를 사용하면 커밋의 순서를 변경할 수도 있다. 특정 커밋을 앞뒤로 재배치하는 데 사용된다.
Main 브랜치: A -- B -- C -- D
\
Feature 브랜치: X -- Y -- Z
위 상황에서, Feature 브랜치에서 'git rebase -i HEAD~3' 명령을 실행한다.
(이전 예시처럼, HEAD~3 은 Feature 브랜치에서 마지막으로 3개의 커밋을 선택하겠다는 의미다)
명령을 실행하면 편집기가 열리며 다음처럼 나타난다.
pick X 커밋 메시지 X
pick Y 커밋 메시지 Y
pick Z 커밋 메시지 Z
원하는 순서로 커밋을 재배치한다. Y와 Z 커밋을 서로 위치 변경하려면 다음처럼 한다.
pick X 커밋 메시지 X
pick Z 커밋 메시지 Z
pick Y 커밋 메시지 Y
그리고 나서 편집기를 종료하면 커밋 순서가 변경된다.
변경된 커밋 순서 :
Main 브랜치: A -- B -- C -- D
\
Feature 브랜치: X -- Z -- Y
여기에서 Y와 Z 커밋의 순서가 변경되어 Z가 Y 앞에 나타난다.
이렇게 하면 특정 커밋들의 순서를 변경할 수 있어서, 프로젝트의 히스토리를 원하는대로 재배치할 수 있다.
---
24년 1월 11일에 작성된 글입니다
'개발툴' 카테고리의 다른 글
intellij 에서 Thymeleaf 빨간색 줄 오류 해결법 (0) | 2024.03.25 |
---|---|
인텔리제이 UTF-8 설정: 한글 깨짐 문제 해결 방법 (0) | 2024.03.24 |
VSCode 다운로드(홈페이지에서) 실패 해결법 (1) | 2024.03.22 |
Tomcat 콘솔 한글 깨짐 문제: 윈도우 콘솔 및 설정파일 인코딩 일치 설정 방법 (0) | 2024.03.22 |
HTML/CSS 코딩을 위한 VSCode 확장팩 + 단축키 사이트 링크 정리 (0) | 2024.03.22 |