Git rebase 튜토리얼
Rebase는 커밋 히스토리를 깔끔하게 유지하기 위해 자주 사용됨.
rebase는 병합 명령어로 수행되지 않지만, 브랜치를 병합하는 데 사용됨.
remote repository를 사용하는 경우 사용을 가급적 피해야 함.
외부에 공개된 commit을 수정하는 경우엔 revert를 사용할 것.
미리 읽어볼 자료.
2024.05.26 - [utils/git and github] - [Git] merge mode: merge and rebase.
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 (작성중)
'utils > git and github' 카테고리의 다른 글
[Git] pager 옵션 조정 (0) | 2024.05.27 |
---|---|
[Git] clone: 원격저장소 복제 (0) | 2024.05.27 |
[Git] Tutorial: remote repository (0) | 2024.05.26 |
[Git] Remote Repository (0) | 2024.05.26 |
[Git] remote, remote add, remote show: 원격저장소와 연결 (0) | 2024.05.26 |