[Git] 깃 Conflict를 해결해 보자

^_^·2022년 7월 14일
0

git

목록 보기
1/1
post-thumbnail

conflict 해결하기

프로젝트를 하다보면 발생하는 conflict 상황을 해결하는 방법을 연습해본 내용을 남긴다.
간단한 마크다운 파일이 있는 main 브랜치에서 conflict/test1, conflict/test2 두개의 브랜치를 만들고 각 브랜치에서 마크다운 파일의 내용을 서로 다르게 입력했을때로 설정하고 연습했다.
테스트에 사용할 repository를 하나 생성한다.


폴더를 생성하고 원격 저장소와 연결하고 마크다운 파일을 하나 생성한다.
원격 저장소에 빈 마크다운 파일을 push한다.


conflict를 발생 시키기 위해 conflict/test1, conflict/test2 두 개의 브랜치를 생성하고 각 브랜치에 다른 내용을 작성한다.
conflict/test1의 마크다운 파일 내용.


그리고 해당 내용을 원격으로 push하고 merge해준다. 여기까지는 문제 없이 잘 merge가 될 것이다. main 브랜치의 내용은 비어 있었고 거기에 conflict/test1의 내용을 push하기 때문이다. push후 원격저장소의 main을 로컬 main으로 pull해온다.

이제 conflict/test2로 브랜치를 이동하고 다른 내용을 작성한다.

add -> commit -> push 후 원격저장소에서 merge를 하려고하면 다음과 같은 메세지가 나온다. main 브랜치에는 test1이라는 내용이 있는데 test2를 입력한 상태로 merge를 하려고하니 생기는 문제이다. 같은 main에서 나온 브랜치들의 내용을 다르게 작성하고 둘다 merge를 하려고하면 먼저 merge된 브랜치와 나중에 merge하려고 하는 브랜치의 내용을 어떻게 반영할지 정해줘야 정상적으로 merge가 가능하다.

터미널에서 git merge main으로 merge를 시도하면 아래와 같은 메세지가 출력된다.

웹에서 conflict를 해결할 수 있지만 터미널과 코드에디터로 수정하는걸 연습했다. code . 명령어로 vscode를 실행하면 원하는 내용으로 수정이 가능하다. 이전 내용을 유지할것인지, 최근 내용으로 수정할것인지, 변경 내용을 모두 반영할 것인지 또는 모두 지우고 원하는 내용을 작성할 것 인지 선택한다.

나는 solved conflict를 작성하고 내용을 수정해 보겠다. 내용을 수정하고 다시 add -> commit -> push 했다. 이제 merge가 잘 될것이다.

원격 저장소에서 main의 마크다운 파일을 확인하면 아까 수정했던 내용이 잘 반영되어 있는 모습을 볼 수 있다.

위과정을 마친후 원격저장소의 main 브랜치의 내용을 로컬 저장소의 내용을 당겨오면 된다.

0개의 댓글