[Git] 충돌 (Conflict) / 로컬 병합(Merge)

2022. 9. 23. 15:55프로그래밍/Git

    목차

원격 저장소로 push 하려는 파일의 로컬의 버전과

원격 저장소의 최신 버전이 일치하지 않을 경우 push 명령어 실행 시 명령이 거부된다.

 

이러한 경우의 해결 방법은 다음의 몇 가지가 있다.

 

이전 버전으로 되돌리기

git reset --hard HEAD~1

원격 저장소로 push 하려는 버전을 한 단계 이전으로 되돌린다.

한 단계 이전 버전은 원격 저장소에 반영되어 있는 최신 버전이므로 되돌리는 것이 가능하다.

 

원격 저장소의 버전을 가져와 새로운 버전 만들기

git pull origin master

원격 저장소의 master 브랜치의 최신 버전을 로컬로 가져온다.

해당 명령어를 실행하면 conflict 가 발생했다는 메시지가 표시된다.

 

<<<<<<<< HEAD (현재 변경 사항)

로컬 환경에서 작성한 내용을 의미한다.

 

>>>>>>>> ec6eb7a ... (수신 변경 사항)

원격 저장소에서 가져온 커밋 내역의 ID 를 의미한다.

 

 

현재 적용하고 싶지 않은 부분을 선택하여 수동으로 직접 지워서 저장해도 되지만

vscode 에서 지원하는 기능을 사용하면 더욱 효율적으로 작업이 가능하다.

 

현재 변경 사항 수락, 수신 변경 사항 수락, 두 변경 사항 모두 수학, 변경 사항 비교 버튼은

vscode 에서 지원하는 기능이다.

 

[ 현재 변경 사항 수락 ]

로컬 환경에서 작성한 내용이 적용된다.

 

[ 수신 변경 사항 수락 ]

원격 저장소에서 가져온 내용이 적용된다.

 

[ 두 변경 사항 모두 수락 ]

로컬 환경에서 작성한 내용과 원격 저장소에서 가져온 내용이 모두 적용된다.

 

[ 변경 사항 비교 ]

로컬 환경에서 작성한 버전과 원격 저장소에서 가져온 버전을 더욱 손쉽게 확인할 수 있다. 

 

원하는 내용으로 변경한 뒤 아래의 명령을 순서대로 실행하여 push 하면 해결이 완료된다.

$ git add .
$ git status
$ git commit -m "메시지"
$ git push origin master