원격 저장소에 업로드 되어있는 최신의 버전을 확인하지 않고, 본인의 로컬 환경에 있는 master
브랜치에 수정을 진행해봅시다. 이후 커밋을 진행하고 원격 저장소에 푸시를 하게 되면 오류가 발생하게 됩니다.
! [rejected] master -> master (fetch first) error: failed to push some refs to 'github 주소'
버전의 내용이 현재 로컬 환경과 원격 저장소가 일치하지 않으므로 위와 같은 오류를 확인할 수 있습니다.
오류를 해결하기 위해 먼저 원격 저장소에 있는 master
브랜치의 최신 버전을 현재의 로컬 환경으로 당겨오는 명령어를 입력합니다.
CONFLICT (content): Merge conflict in index.html // 위와 같이 터미널에서 충돌이 발생했음을 알려줍니다.
현재 변경 사항 수락 | 수신 변경 사항 수락 | 두 변경 사항 모두 수락 | 변경 사항 비교 <<<<<< HEAD (현재 변경 사항) <h1>ABC</h1> // 현재 로컬 환경에서 입력한 내용 ====== <h1>XYZ</h1> // 원격 저장소에서 가져온 내용 >>>>> eac7bc6c142aacdb4ce0d9 (수신 변경 사항) // 커밋 내역의 아이디
위 명령어를 통해 현재 수정을 진행한 index.html에 위와 같이 현재 변경사항과 원격 저장소에 있는 최신 버전이 둘다 VS code에 표기되게 됩니다. VS code는 특히, 현재 변경 사항 수락
, 수신 변경 사항 수락
, 두 변경 사항 모두 수락
, 변경 사항 비교
버튼을 활성화하여 사용자가 쉽게 해당 오류를 해결할 수 있게 해줍니다.
이번에는 원격 저장소의 최신 버전과 현재 로컬 환경에서 수정한 부분을 병합하는 방법에 대해 알아봅시다. 두 가지의 버전을 병합해서 새롭게 만들어주는 일이라고 할 수 있습니다.
위 명령어를 통해 두 버전의 수정사항을 모두 참고하여 새로운 버전을 만듭니다.
이후 add, commit을 진행하고 push까지 진행해주면 이번에는 충돌 없이 두 버전이 병합된 버전이 푸시되는 것을 확인할 수 있습니다.
이렇게 다른 개발자들과 프로젝트를 진행할 시에 충돌이 발생하지 않게 최신 버전을 꼭 확인해주어야 하지만 혹시 이러한 상황이 발생하게 되면 위와 같이 해결해주시면 됩니다.