git rebase 명령어를 사용하다 보면 충돌이 발생하는 경우가 있습니다. rebase를 중단하기 위해서는 git rebase --abort 명령어를 사용하면 되고 충돌을 해결하기 위해서는 일단 충돌한 파일을 열어서 내용을 수정하고 스테이징 영역에 추가합니다. 그리고 git rebase --continue 명령어를 사용해서 커밋 메시지를 작성하면 충돌이 해결되고 rebase가 완료가 됩니다.
master.txt 파일 생성
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (master)
$ touch master.txt
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (master)
$ git add master.txt
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (master)
$ git commit -m "create master.txt"
[master (root-commit) 69db471] create master.txt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 master.txt
feature 브랜치 생성 및 feature.txt 파일 생성
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (master)
$ git switch -c feature
Switched to a new branch 'feature'
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature)
$ touch feature.txt
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature)
$ git add feature.txt
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature)
$ git commit -m "create feature.txt"
[feature c3d5928] create feature.txt
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 feature.txt
feature 브랜치에서 master.txt 파일에 content2 추가
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature)
$ git commit -am "add content2 master.txt"
[feature 038060a] add content2 master.txt
1 file changed, 1 insertion(+)
master 브랜치에서 master.txt 파일에 content1 추가
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature)
$ git switch master
Switched to branch 'master'
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (master)
$ git commit -am "add content1 master.txt"
[master b5ae533] add content1 master.txt
1 file changed, 1 insertion(+)
feature 브랜치에서 feature.txt 파일에 content 추가
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (master)
$ git switch feature
Switched to branch 'feature'
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature)
$ git commit -am "add content feature.txt"
[feature 87db9e8] add content feature.txt
1 file changed, 1 insertion(+)
feature 브랜치에서 rebase 충돌 해결
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature)
$ git rebase master
Auto-merging master.txt
CONFLICT (content): Merge conflict in master.txt
error: could not apply 038060a... add content2 master.txt
hint: Resolve all conflicts manually, mark them as resolved with
hint: "git add/rm <conflicted_files>", then run "git rebase --continue".
hint: You can instead skip this commit: run "git rebase --skip".
hint: To abort and get back to the state before "git rebase", run "git rebase --abort".
Could not apply 038060a... add content2 master.txt
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature|REBASE 2/3)
$ git add master.txt
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature|REBASE 2/3)
$ git rebase --continue
[detached HEAD b7f7195] add content1 master.txt
1 file changed, 1 insertion(+), 1 deletion(-)
Successfully rebased and updated refs/heads/feature.
USER-PC@DESKTOP-JAEGCLI MINGW64 ~/Desktop/gitstudy (feature)
$ git log --oneline
8b1bf63 (HEAD -> feature) add content feature.txt
b7f7195 add content1 master.txt
b73ea7b create feature.txt
b5ae533 (master) add content1 master.txt
69db471 create master.txt
충돌한 파일의 내용을 수정하고 저장을 하고 git add 명령어로 스테이징 영역에 추가합니다. git rebase --continue 명령어를 입력하면 commit 메시지를 수정할 수 있는 창이 열리고 수정하고 저장 후 창을 닫으면 충돌을 해결할 수 있습니다. 충돌이 발생했을 때 hint 메시지를 보고 명령어를 입력하면 외우지 않고 입력할 수 있습니다.
'IT > Git' 카테고리의 다른 글
git rebase 커밋 합치기 (0) | 2023.03.09 |
---|---|
git rebase 커밋 메시지 수정 (0) | 2023.03.09 |
git rebase 명령어 (0) | 2023.03.07 |
GitHub로 협업하기 - Forking Workflow (0) | 2023.03.06 |
github pull request 사용법 (0) | 2023.03.03 |
댓글