Everyday Dev System

TIL_0605 : GitHub resolve conflicts 비활성화 본문

내배캠 주요 학습/TIL : Today I Learned

TIL_0605 : GitHub resolve conflicts 비활성화

chaeyoung- 2023. 6. 5. 19:15

 

This branch has conflicts that must be resolved

 

#문제점 :

타인이 나의 repo에 Pull Request를 했는데 싱크가 맞지 않아 충돌이 발생했다.

Merge 버튼도, 충돌 해결 버튼도 활성화가 안 되어 있다.

Resolve conflicts 버튼도 클릭이 안 되어서 merge하기 위한 과정에서  충돌 해결을 웹에서 할 수 없는 상황이다.

 

이는 conflict 내용이 복잡해서 github이 이를 보여줄 수 없는 상황이라고 한다.

많은 양의 코드를 변경한 경우 위와 같은 현상이 나타날 수 있다.

 

 

Confict 란?

브랜치와 브랜치의 병합 과정에서, 동일한 내용을 각자 다르게 변경한 이력이 있을 때 변경 이력들끼리 발생하는 충돌

 

 

#시도 : 

Gighub DeskTop을 설치하여 해결하려 해보았으나, 도저히 방법을 못찾겠다..

 

 

그래서 CLI 방식으로 해결하는 방법을 시도해보았다.

github에서 아래와 같이 안내가 되어 있어 그대로 작성했다.

Step 1: From your project repository, check out a new branch and test the changes.

git checkout -b ksungsu-main main
git pull git@github.com:ksungsu/MemoNote.git main


Step 2: Merge the changes and update on GitHub.

git checkout main
git merge --no-ff ksungsu-main
git push origin main

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

위와 같이 cli 환경에서 코드를 입력하고 보니 

 

아래와 같은 충돌 내역이 코드에서 보인다.

해당 충돌을 해결하고 commit, push를 한다.

그 후 main으로 checkout을 한 후에 main에 병합할 브랜치명을 기재해서 병합한다.

git merge [머지할 브랜치명] 

ex) git merge ksungsu-main

 

그리고 main에 commit, push를 하면 된다.

 

그러면 github에서 병합이 되었다는 것을 확인할 수 있다.

 

# 문제 해결: 

resolve 버튼이 클릭이 안되는 경우에는 cli 환경에서 브랜치를 생성하고 충돌을 해결해야 한다.

웹에서 충돌을 해결하기에 코드가 너무 많아서 활성화가 되지 않는것이다.

그러므로 브랜치를 생성해서 가져온 후에 충돌을 해결하고 해당 브랜치에 해결한 부분을 push하고,

main으로 head를 이동하여 생성한 브랜치를 main에 병합시키면 된다.

마지막으로, main에 test commit을 하면 pull request를 정상적으로 main에 잘 반영됨을 확인할 수 있다.