728x90
반응형
Github Conflict 해결 - main 브랜치와의 merge 중
원격 저장소의 main 브랜치에서 추가 브랜치를 파서 소스코드를 push하려던 찰나에
Git 명령프롬토콜이 리모트에 없는 사항 (커밋내역) 이 있기에 업데이트가 거부되었다고 한다.
(소스코드 상 충돌이 나서, Github에 올릴 수 없다고 에러가 발생했다.)
로컬에서 충돌을 해결하기 위해 원격 remote에 저장된 사항을 pull 당겨왔다.
$ git pull origin donguk_gui
하지만, Git은 pull을 할 수 없다고 에러 메시지를 날려줬다.
이는, 충돌이 났기에 함부로 소스코드를 가지고 오지 않고 Git은 충돌한 사항이니, 참고하라고 메시지를 남긴 것이다.
git pull 명령에 --rebase 옵션 인자를 붙여서 로컬에서 충돌 사항을 함께 merge 했다.
$ git pull --rebase origin donguk_gui
로컬 브랜치에 원격 저장소의 소스코드가 당겨지고, 충돌난 사항에 대해서도 소스코드가 merge되어진다.
아래의 명령 프롬토콜을 참고해서, 충돌이 난 파일을 확인한다.
그리고, 그 파일로 편집기를 열어서 소스코드를 확인한다.
편집기로 파일을 확인하면, 충돌이 난 사항을 볼 수 있다.
여기서, 정상적으로 작동하는 코드를 선별해내서 원격 저장소에 작성된 코드와 로컬 저장소에 작성되었던 코드 중 하나를 삭제해서 충돌을 해결한다.
# 참고
<<<<<< HEAD :
=========== 이 표식이 존재하는 소스코드는 원격 저장소에 소스코드 이고,
===========
>>>>>>>>>>> 이 표식은 로컬 저장소에 존재하는 소스코드이다.
충돌을 해결을 완료 후 저장 후
git add .
git commit -m "커밋 메시지" 명령을 통해 로컬 저장소에 반영한다.
그리고나서, git push origin {원격 저장소의 push할 브랜치}를 입력해서 원격 저장소에 소스코드를 push 한다.
이때 push할 때는 -f 옵션인자를 붙여줘서 "로컬에서 충돌한 사항 반영해서 확인했으니, 강제 병합을 수행한다."
이 부분에 대해선 내가 추론한 Git 전략이고, 선배나, Git을 잘 다루는 사람에게 여쭤봐서 안정하게 관리하도록 하겠다.
충돌한 사항을 해결하고 git push origin {브랜치 명}을 수행하면,
현재의 브랜치가 원격 브랜치보다 뒤에 있으므로 업데이트가 불가능하다고 했다.
그래서, -f 옵션인자로 강제 병합을 시켰다.
로컬에서 충돌을 해결하고 원하는 소스코드가 만들어졌기에 강제 병합을 수행했다.
728x90
반응형
'CS 대학강의' 카테고리의 다른 글
[CS 1-2 | 프로그램 설계 방법론] Github 충돌해결 전략 - 모두의 루미큐브 (0) | 2022.12.14 |
---|---|
[CS 1-2 | 시스템 프로그래밍 기초] 포인터란 - 포인터 개념 & 포인터 의의 (2) | 2022.12.11 |
[CS 1-2 | 오픈소스 SW 기초] Docker 이미지 & 컨테이너 (0) | 2022.12.08 |
[CS 1-2 | 오픈소스 SW 기초] 실수로 main 브랜치를 건드렸을 때 대처법 (0) | 2022.12.07 |
[CS 1-2 | 오픈소스 SW 기초] JAVA 프로젝트를 위한 개발 리소스 정리 (0) | 2022.12.06 |