git conflict 해결

박은정·2021년 9월 8일
0

프로젝트

목록 보기
20/34

1. pull & merge → conflict 발생

해당 branch의 내용에 문제가 없을 때 merge가 되었는데
이렇게 merge된 remote master branch 의 내용을
내 local master branch 로 pull 하고
feature/Main (현재 작업중인 branch) 로 이동해서 다시
git merge master 명령어를 통해 새로 변경된 master branch 내용을 합치면
conflict가 발생하는데 PR 페이지에서 아래처럼 두 개 모두 빨간색 x 로 되어있는게 아니라 conflict가 어느 파일에서 발생했다고 뜬다

이후에 conflict 나면 다시 이미지 첨부하려고 한다

지금 이 이미지는 merge될 때 conflict된게 없다는 뜻이다


2. conflict 된 내용 확인

그래서 vscode 에디터로 어느 부분이 conflict되었나 확인하면

위에서 세번째로 있는 빛나는 부분 곳에 ! 표시가 뜨는데
그 부분에 새로 변경된 remote master 의 내용과
내가 지금 작업하는 feature branch에 가지고 있는 내용이 충돌되는 것을 확인할 수 있다

<<<< HEAD (Current Change)

먼저 HEAD (Current Change) 라고 되어있는 상단 의 부분은 현재 내가 작업하는 feature branch에서 가지고 있는 코드 정보이고

>>>>> master (Incoming Change)

master (Incoming Change) 라고 되어있는 하단 의 부분은 새로 수정된 remote master 에서 pull 하고 merge한 내용이다


3. master vs feature branch 내용 비교 및 수정

상단의 버튼? 을 선택할 수 있는데

  1. Accept Curent Change
    • 현재 내용으로 수정한다
  2. Accept Incoming Change
    • 새로 merge한 remote master 의 내용으로 수정한다
  3. Accept Both Changes
    • 현재 branch에 가지고 있는 내용과 변경된 master 의 내용 모두 가져온다
    • 이 설정을 선택하지 않고 <<< HEAD, ===, > master 코드 부분을 모두 삭제하면 자동으로 Accept Both Changes 옵션으로 두가지 모두 가져오게 된다
    • 이 방법으로 하면 내가 직접 눈으로 비교하고 원하는 내용으로 수정하면 된다
  4. Compare Changes
    • 변경된 내용을 비교한다

이번에 나는 3번 Accept Both Changes 방법을 통해
변경된 master 내용과 내가 feature branch에서 가지고 있는 내용을 비교해서
중복된 내용 및 필요없는 내용(=삭제하고 싶은 내용)은 삭제하고 최종적으로 가지고 갈 내용만 남겼다


4. conflict 된 내용 반영하기

1) git add .

git add .

git add Routes.js 처럼 해당하는 폴더명으로 적어도 된다!
dit(.) 은 전체 변경된 내용 모두 add 한다는 뜻이다

2) git commit

git commit -m "Fix : conflict resolve"

한번은 이렇게 commit 했는데 터미널에 >bquote 로 떴다
bquote 해결한 분의 블로그 를 보니
npm start 하고 탈출할 때처럼 ctrl + C 를 하거나
exit() 명령어를 입력하면 탈출할 수 있다고 한다

>bquote 가 생성되는 이유는 아직 모른다...!

탈출하면 별 문제 없이 push 명령어를 입력해주면 된다

3) git push

git push origin feature/Main 

내가 작업하던 branch에서 merge 했을 때 conflict난 것이고
내가 현재 위치하는 feature branch 에서 push하기 때문에
위 처럼 origin feature branch 로 push 하면 된다


5. 최종 merge !!

conflict를 해결하고 해당 feature branch 를 PR를 올리면
github repository의 관리자? (결정권이 있는 assignee) 이 merge를 해주면 끝이다!!

이후에 모든 내용이 merge되고 초기설정 세팅하는 것 처럼 하나의 컴퓨터에서 전체내용 둘러보고 수정할 거 있으면 한번에 수정하고 배포할 준비하면 된다고 한다

profile
새로운 것을 도전하고 노력한다

0개의 댓글