본문 바로가기
utils/git and github

[Git] rebase: Tutorial

by ds31x 2024. 5. 28.

Git rebase 튜토리얼

Rebase는 커밋 히스토리를 깔끔하게 유지하기 위해 자주 사용됨.

rebase는 병합 명령어로 수행되지 않지만, 브랜치를 병합하는 데 사용됨.

remote repository를 사용하는 경우 사용을 가급적 피해야 함.
외부에 공개된 commit을 수정하는 경우엔 revert를 사용할 것.

 

미리 읽어볼 자료.

2024.05.26 - [utils/git and github] - [Git] merge mode: merge and rebase.

 

[Git] merge mode: merge and rebase.

Git Merge MethodsGit은 branch를 기반으로 병합을 수행함.대표적인 병합 방식으로는 Fast-Forward Merge, 3-Way Merge, Rebase가 있음.1. Fast-Forward MergeFast-Forward Merge는 순차적인 commit에 맞춰 병합하는 방식임.한 사

ds31x.tistory.com


1단계: Git 리포지토리 초기화

1.새로운 디렉토리를 생성함.

mkdir my-repo
cd my-repo

2.Git 리포지토리를 초기화함.

git init
git branch -m main

2단계: main 브랜치에 커밋 생성

1.첫 번째 파일을 생성하고 커밋함.

echo "첫 번째 커밋" > file.txt
git add file.txt
git commit -m "첫 번째 커밋"

2.추가 커밋을 생성함.

echo "두 번째 커밋" >> file.txt
git commit -am "두 번째 커밋"

echo "세 번째 커밋" >> file.txt
git commit -am "세 번째 커밋"

echo "네 번째 커밋" >> file.txt
git commit -am "네 번째 커밋"

3.main 브랜치의 커밋 로그를 확인함.

git log --oneline --graph

 

결과

* dd71201 (HEAD -> main) 네 번째 커밋
* 48fe8f6 세 번째 커밋
* f100b96 두 번째 커밋
* 01e83ef 첫 번째 커밋

3단계: feature 브랜치 생성 및 커밋

1.feature 브랜치를 생성하고 전환함.

git switch -c feature

2.feature 브랜치에서 커밋을 생성함.

echo "첫 번째 feature 커밋" >> file.txt
git commit -am "첫 번째 feature 커밋"

echo "두 번째 feature 커밋" >> file.txt
git commit -am "두 번째 feature 커밋"

3.feature 브랜치의 커밋 로그를 확인함.

git log --oneline --graph --all

 

결과

* 5a9c9ca (HEAD -> feature) 두 번째 feature 커밋
* 2d5f7e5 첫 번째 feature 커밋
* dd71201 (main) 네 번째 커밋
* 48fe8f6 세 번째 커밋
* f100b96 두 번째 커밋
* 01e83ef 첫 번째 커밋

4단계: main 브랜치 추가 commit

1.새로운 파일을 생성하고 커밋함.

git switch main
echo "feature 브랜칭 이후 커밋" > new_file.txt
git add new_file.txt
git commit -m "feature 브랜칭 이후 commit"

2.커밋 로그를 확인함.

git log --oneline --graph --all

 

결과

* 754a215 (HEAD -> main) feature 브랜칭 이후 commit
| * 5a9c9ca (feature) 두 번째 feature 커밋
| * 2d5f7e5 첫 번째 feature 커밋
|/
* dd71201 네 번째 커밋
* 48fe8f6 세 번째 커밋
* f100b96 두 번째 커밋
* 01e83ef 첫 번째 커밋

5단계: Rebase 수행

1.feature 브랜치에서 main 브랜치로 rebase를 수행함.

git switch feature
git rebase main

2.Rebase 후 커밋 로그를 확인함.

git log --graph --oneline --all

 

결과

* 900ea54 (HEAD -> feature) 두 번째 feature 커밋
* 585092c 첫 번째 feature 커밋
* 754a215 (main) feature 브랜칭 이후 commit
* dd71201 네 번째 커밋
* 48fe8f6 세 번째 커밋
* f100b96 두 번째 커밋
* 01e83ef 첫 번째 커밋

5단계: Rebase 후 병합 (Fast-Forward Merge)

1.main 브랜치로 전환함.

git switch main

2.feature 브랜치를 main 브랜치에 병합함.

git merge feature

3.최종 커밋 로그를 확인함.

git log --graph --oneline --all

 

결과

* 900ea54 (HEAD -> main, feature) 두 번째 feature 커밋
* 585092c 첫 번째 feature 커밋
* 754a215 feature 브랜칭 이후 commit
* dd71201 네 번째 커밋
* 48fe8f6 세 번째 커밋
* f100b96 두 번째 커밋
* 01e83ef 첫 번째 커밋

요약

이 튜토리얼에서는

  • Git 리포지토리를 초기화하고,
  • main 브랜치와 feature 브랜치에 커밋을 생성한 후,
  • feature 브랜치를 main 브랜치에 rebase하고 병합하는 과정을 설명함.

각 단계에서 커밋 로그를 확인하여 변화 과정을 명확히 이해할 수 있음.


2024.05.20 - [utils/git and github] - [Git] Git Summary (작성중)

 

[Git] Git Summary (작성중)

git이란2024.05.20 - [utils/git and github] - Git : 소개 git 설치 후 해줘야 하는 작업들[Git] git 설치 후 우선 해줘야 하는 작업들 (tistory.com)local repository 초기화2024.05.20 - [utils/git and github] - [Git] init : local rep

ds31x.tistory.com