버전 관리 - 충돌, 로컬 병합

OROSY·2021년 4월 7일
0

Git

목록 보기
11/11
post-thumbnail

충돌, 로컬 병합

1. 충돌(Conflict)

원격 저장소에 업로드 되어있는 최신의 버전을 확인하지 않고, 본인의 로컬 환경에 있는 master 브랜치에 수정을 진행해봅시다. 이후 커밋을 진행하고 원격 저장소에 푸시를 하게 되면 오류가 발생하게 됩니다.

1. $ git push origin master

! [rejected] master -> master (fetch first)
error: failed to push some refs to 'github 주소'

버전의 내용이 현재 로컬 환경과 원격 저장소가 일치하지 않으므로 위와 같은 오류를 확인할 수 있습니다.

2. $ git pull origin master

오류를 해결하기 위해 먼저 원격 저장소에 있는 master 브랜치의 최신 버전을 현재의 로컬 환경으로 당겨오는 명령어를 입력합니다.

2.1 터미널

CONFLICT (content): Merge conflict in index.html
// 위와 같이 터미널에서 충돌이 발생했음을 알려줍니다.

2.2 index.html

현재 변경 사항 수락 | 수신 변경 사항 수락 | 두 변경 사항 모두 수락 | 변경 사항 비교
<<<<<< HEAD (현재 변경 사항) 
 <h1>ABC</h1> // 현재 로컬 환경에서 입력한 내용
======
 <h1>XYZ</h1> // 원격 저장소에서 가져온 내용
>>>>> eac7bc6c142aacdb4ce0d9 (수신 변경 사항) // 커밋 내역의 아이디

위 명령어를 통해 현재 수정을 진행한 index.html에 위와 같이 현재 변경사항과 원격 저장소에 있는 최신 버전이 둘다 VS code에 표기되게 됩니다. VS code는 특히, 현재 변경 사항 수락, 수신 변경 사항 수락, 두 변경 사항 모두 수락, 변경 사항 비교 버튼을 활성화하여 사용자가 쉽게 해당 오류를 해결할 수 있게 해줍니다.

2. 로컬 병합(Merge)

이번에는 원격 저장소의 최신 버전과 현재 로컬 환경에서 수정한 부분을 병합하는 방법에 대해 알아봅시다. 두 가지의 버전을 병합해서 새롭게 만들어주는 일이라고 할 수 있습니다.

2.1 $ git pull origin master

위 명령어를 통해 두 버전의 수정사항을 모두 참고하여 새로운 버전을 만듭니다.

2.2 $ git push origin master

이후 add, commit을 진행하고 push까지 진행해주면 이번에는 충돌 없이 두 버전이 병합된 버전이 푸시되는 것을 확인할 수 있습니다.
이렇게 다른 개발자들과 프로젝트를 진행할 시에 충돌이 발생하지 않게 최신 버전을 꼭 확인해주어야 하지만 혹시 이러한 상황이 발생하게 되면 위와 같이 해결해주시면 됩니다.

profile
Life is a matter of a direction not a speed.

0개의 댓글