▶충돌이 왜 발생해?
충돌이 발생하는 이유는 각각 branch에서 수정한 위치가 같아서 git이 둘중에 뭘로 받아들여야 할 지 몰라서 발생한다. 예를들어서
이렇게 main 브랜치에서 Tottenham의 라이벌팀 Arsenal뒤에 .을 붙여주고 커밋해주고
충돌1 브랜치로 switch하여 느낌표를 붙여주고 커밋 후
merge를 해주면
이런식으로 충돌이 일어나게된다. 컴퓨터가 뭘 받아들여야 할지 헷갈림.
▶merge 충돌 해결하기
이러한 충돌을 해결하는건 간단하다. 바로 컴퓨터한테 뭘 어떻게 할지를 알려주고 저장하면 된다.
위에 사진을 보면 4가지 선택지가 나타난다. 그 중 한가지를 골라 저장 후 커밋해주면 해결된다.
하나를 고르고 커밋해주면...
이렇게 main|MERGING 에서 main으로 다시 돌아오게 된다.
이렇게 하면 merge상황에서 충돌 해결이다!
▷당장 충돌 해결이 어렵다면?
만약 당장 충돌 해결이 어려운 상황이라면 아래의 명령어를 입력해주면 된다.
git merge --abort
그러면 main 브랜치로 다시 이동하고 충돌해결이 가능할 때 다시 merge해서 충돌 해결 해주면 됨.
▶rebase 충돌 해결하기
rebase도 비슷한데 다른점이 있다.
이렇게 같은 줄을 수정해주고 rebase를 해보면
또 이렇게 충돌이 일어난다.
하지만 merge때 처럼 저장 후 커밋을 해줘도 충돌2 브랜치로 넘어가지를 않는다.
이것이 merge와 rebase의 다른점인데
rebase에서 충돌을 해결할 때는 충돌이 일어난 파일을 조정 후 add를 해주고
git rebase --continue
위 명령어를 입력해주면 충돌이 해결 되고 충돌2 브랜치로 넘어오게 된다.
그리고 전에 배운것처럼
main 브랜치로 switch해주고 "git merge 충돌2" 명령어를 입력해주면 된다.
▷당장 충돌 해결이 어렵다면?
merge와 마찬가지로 만약 당장 충돌 해결이 어려운 상황이라면 아래의 명령어를 입력해주면 된다.
git merge --abort
▶충돌 해결이 다 끝났으면?
마지막으로 아래 명령어를 통해 병합을 완료한 브랜치들은 모두 삭제해주면 된다.
git branch -d (branch이름)
그러면 이렇게 깔끔하게 충돌 해결 후 병합이 완료된다!
'배우기📖 > Git & GitHub' 카테고리의 다른 글
[GitHub]GitHub 원격 저장소 사용하기 (0) | 2024.02.20 |
---|---|
[GitHub] 깃허브 시작하기(personal access token 만들기, 토큰 컴퓨터에 저장하기) (0) | 2024.02.02 |
[Git] branch만들어보기 (Git branch, Git switch, merge, rebase) (1) | 2024.01.28 |
[Git]변경사항 확인 후 커밋하기, 작업 되돌리기 (1) | 2024.01.27 |
[Git] 깃 저장소 만들기, 버전 만들기 (0) | 2024.01.26 |