브랜치 간 충돌
[충돌 상황 만들기]
1. conflict-1, conflict2 브랜치 생성
2. main 브랜치
커밋 메시지 : Edit tottenham, liverpool, manU
3. conflict-1 브랜치
커밋 메시지 : Edit tottenham
4. conflict-2 브랜치 1차
커밋 메시지 : Edit liverpool
5. conflict-2 브랜치 2차
커밋 메시지 : Edit manU
소스트리에서 보면 이런 상태.
여기서 merge를 해보자.
git merge conflict-1
로 병합을 시도하면 충돌 발생.
충돌 발생.
현재의 브랜치에서는 이렇게 말하던데...(초록색 부분)
merge한 브랜치에서는 저렇게 말하네(파란색 부분)
둘 중에 뭘 선택할까?라고 함.
만약, main 브랜치의 내용을 고수하겠다면
초록색 부분 위의 '현재 변경 사항 수락' 클릭.
만약, 충돌된 부분이 워낙 많아서 해결이 어려울 경우,
아래의 명령어로 merge 중단.
git merge --abort
이렇게 하면 merge가 중단되고 평온한 main의 상태가 됨.
다시 conflitc-1을 merge하면,
충돌이 발생. 충돌을 해결한 후에
git add .와 git commit
으로 병합 완료.
커밋 메시지는 이미 만들어져 있음. ctrl + w 누르고 나오기.
소스트리에서 확인하면, 아까 갈라져 있던 애들이 잘 합쳐져 있음.
conflict-2 브랜치로 이동 후, rebase 해주면
오류가 뜸.
두 브랜치에서 동시에 이 파일을 수정하려고 한다는 경고. 해결해달라는 것.
일단 충돌이 발생한 파일에 들어가서, 이번엔 '수신 변경 사항 수락'을 누르고 저장.
해결 가능 시
git rebase --continue
↓ ctrl + w로 빠져 나오기.
충돌이 하나 더 발생함.
마찬가지로 충돌난 파일에 들어가서 이번엔 '현재 변경 사항 수락'을 누른 뒤, 저장.
git add .와 git rebase --continue를 통해서 해결.
해결 완.
소스트리에서 보면 main 브랜치가 뒤처져 있음.
나뭇가지의 맨 끝에, 최신 커밋에 위치함.
conflict-1, conflict-2 브랜치 삭제하기.
깔끔하게 main만 남아있음.
결론 : 다 사용한 브랜치는 제때 지워주기. 그래야 혼란 없다.