본문 바로가기
Git & GitHub

충돌 해결하기

by danny-j 2022. 11. 29.

브랜치 간 충돌

  • 상황 -- 파일의 같은 위치에 다른 내용이 입력된 상황

 


상황 만들기

1. conflict-1, conflict-2 브랜치 생성

  • 총 3개의 Brnach로 진행
  • main, conflict-1, conflict-2

 

2. main 브랜치 

  • Tigers manager를 Kenneth로 변경
  • Leopards coach를 Nicholas로 변경
  • Panthers coach를 Shirley로 변경
  • 커밋 메시지 -- Edit Tigers, Leopards, Panthers

 

3. conflict-1 브랜치

  • Tigers manager를 Deborah로 변경
  • 커밋 메시지 -- Edit Tigers

 

4. conflict-2 브랜치 1차

  • Leopards coach를 Melissa로 변경
  • 커밋 메시지 -- Edit Leopards
  • Panthers coach를 Raymond로 변경
  • 커밋 메시지 -- Edit Panthers

 

merge 충돌 해결하기

  • conflict-1과 merge를 시도했을 때 충돌 발생
  • tigers.yaml에서 충돌이 났다고 알려주고 있음
  • =======를 기준으로 현재 Branch와 conflict-1의 충돌부분을 보여줌

 

충돌부분 수정

  • conflict-1의 Deborah부분을 지우고 현재 Branch의 수정부분만 남김
  • 수정 후 add와 메시지 없이 commit
  • commit 후 Editer가 열리고 자동으로 commit 메시지가 'Merge branch 'conflict-1'으로 되있음
    • 그냥 종료 또는 commit 메시지 수정 후 종료

 

당장 충돌 해결이 어려울 경우

git merge --abort
  • merge로 인한 충돌 전의 상태로 돌아감

 

rebase 충돌 해결하기

  • leopards.yaml파일의 충돌 부분에서 conflict-2의 수정부분을 남겨놓고 main부분의 수정사항을 삭제
  • 충돌 해결 후 add를 해주고 다른 commit의 충돌도 있으므로 git rebase --continue로 계속 진행
  • panters.yaml파일의 충돌 부분에서 main의 수정부분을 남겨놓고 conflict-2부분의 수정사항을 삭제
  • 충돌 해결 후 add를 해주고  git rebase --continue를 하면 더이상 충돌이 없기 때문에 Successfully rebased라고 나오는걸 볼 수 있음

 

당장 충돌 해결이 어려울 경우

git rebase --abort
  • merge와 마찬가지로 rebase로 인한 충돌 전의 상태로 돌아감

 

결과

  • Q. 두 마디짜리 Branch를 rebase 했는데 결과에는 왜 한 마디만 추가되었나?
  • A. 충돌 해결 중 두 번째 것에서는 currunt, 즉 main Branch 것(Shirley)을 채택했기 때문에
    • 즉 rebase가 의미가 없어졌으므로 commit을 추가할 필요가 없어졌기 때문

'Git & GitHub' 카테고리의 다른 글

GitHub 시작하기  (0) 2022.11.29
Git 원격 저장소  (0) 2022.11.29
Git Branch 합치기 실습  (0) 2022.11.24
Git Branch  (0) 2022.11.22
Git에서 과거로 돌아가는 두 방식 / 커밋 삭제  (0) 2022.11.22

댓글