같은 부분에 다른 코드들이 합쳐져야 하는경우 git은 무엇을 선택해야 할지 알수 없으므로 두 코드가 conflict(충돌)이 일어났음을 알려준다.
충돌이 일어나는 상황을 만들기 위해
conflict-1
,conflict-2
브랜치를 각각 생성한다.
충돌이 나도록 내용을 변경 후에 merge 를 실행한다.
conflict가 일어났음을 알려주는 로그 확인
vscode에서 conflict 부분을 확인하고 해결한다
git merge --abort
를 입력하여 merge를 취소한다.충돌 부분을 해결 한 후 git add .
,git commit
을 입력하여 merge결과를 commit 한다.
git switch conflict-2
명령어로 브랜치를 이동한다.
git rebase main
을 입력하여 conflict-2 브랜치의 내용을 main branch에 rebase한다.
git status
를 입력하여 현재 상황 확인
conflict 된 부분을 확인하여 해결한다.
git rebase --abort
명령어를 이용하여 rebase과정을 취소할 수 있다.git add .
입력하여 충돌 해결된 부분을 add 한다.
merge와는 다르게 git rebase --continue
를 입력하여 다음 commit rebase를 계속한다.
git rebase --continue
하면 commit을 요구하므로 commit을 해준다.
다른 conflict가 발생하면 이전과 같은 과정으로 해결한다.
rebase가 성공적으로 완료되었음을 확인
마지막으로 main branch를 fast-forward하기 위해 main 브랜치로 이동하여 merge를 진행한다. git merge conflict-2
필요없어진 conflict-2브랜치는 삭제한다.
git branch -d conflict-2