새소식

Git & GitHub/제대로 파는 Git & GitHub

[제대로 파는 Git & GitHub-by 얄코] 충돌 해결하기

  • -

해당 게시물은 [제대로 파는 Git & GitHub - by 얄코]를 수강한 내용을 바탕으로 작성하였습니다.

 

브랜치 간 충돌

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

 

상황 만들기

1. 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

 

5. conflict-2 브랜치 2차

  • Panthers의 coach를 Raymond로 변경
  • 커밋 메시지: Edit Panthers

 

 

 

 

 

 

 

 

 

 


1. merge 충돌 해결하기

git merge conflict-1로 병합을 시도하면 충돌 발생

  • 오류 메시지와 git status 확인
  • VS Code에서 해당 부분 확인

 

현재 버전에서는 노랗게 표시한 부분 안 나타나므로 충돌 시 직접 타이핑해서 수정한 다음 merge

 

 

당장 충돌 해결이 어려울 경우 아래 명령어로 merge 중단

git merge --abort

 

해결 가능 시 충돌 부분을 수정한 뒤 git add ., git commit으로 병합 완료

 

 

 

 


2. rebase 충돌 해결하기

conflict-2에서 git rebase main로 리베이스 시도하면 충돌 발생

  • 오류 메시지와 git status 확인
  • VS Code에서 해당 부분 확인

 

 

 

 

당장 충돌 해결이 어려울 경우 아래 명령어로 rebase 중단

git rebase --abort

 

해결 가능 시

  • 충돌 부분을 수정한 뒤 git add .
  • 아래 명령어로 계속
git rebase --continue
  • 충돌이 모두 해결될 때까지 반복

 

하나해결하니 또 충돌 발생

 

충돌 부분 수정 후...

 

모두 해결됨

 

 

 

 

Q. 두마디짜리 브랜치를 rebase했는데 결과에는 왜 한마디만 추가되어 있나요?

 

충돌 해결 중 두번째 것에서는 current, 즉 main 브랜치 것(Shirley)을 채택했기 때문에
(즉 rebase가 의미가 없어졌으므로)

커밋으로 추가할 필요가 없어졌기 때문!!!

 

 

 

 

 

 

main에서 git merge conflict-2로 마무리

 

 

 

 

conflict-1, conflict-2 삭제

 

 

 

 

 

 

 


<SourceTree로 진행해보기>

 

 

1. 브랜치 만들고 merge, rebase 하기

 

1. to-merge, to-rebase 브랜치 생성

  • 상단의 브랜치 버튼 클릭
  • 왼쪽의 브랜치 탭에서 클릭하여 이동

 

2. main 브랜치

  • Tigers의 manager를 Brenda로 변경
  • 커밋 메시지: Edit Tigers manager

 

3. to-merge 브랜치

  • Tigers의 coach를 Ruth로 변경
  • 커밋 메시지: Edit Tigers coach

 

4. to-rebase 브랜치

  • Tigers의 memebers에 Tyler 추가
  • 커밋 메시지: Edit Tigers members

 

⭐️ 브랜치를 이동하며 파일 살펴보기

 

5. to-merge 브랜치를 main으로 merge

  • main에 위치한 뒤 to-merge 브랜치를 우클릭하여 Merge ... 클릭

 

 

 

6. to-rebase 브랜치를 main으로 rebase

  • to-rebase에 위치한 뒤 main 브랜치를 우클릭하여 ... 재배치 클릭

main 뒤쳐져있음

 

 

  • main에 위치한 뒤 to-rebase 브랜치를 우클릭하여 Merge ... 클릭

 

 

 

 

 

 

 

7. main으로 이동 후 to-merge to-rebase 우클릭하여 삭제

  • merge되지 않은 브랜치의 경우 강제 삭제 체크박스 선택

 

 


2. merge 충돌 해결해보기

💡 rebase는 충돌 가능시 CLI로 진행 권장

 

 

 

1. conflict 브랜치 생성

 

 

2. main 브랜치

  • Tigers의 members에 Kim 추가
  • 커밋 메시지: Edit Kim to Tigers

 

3. conflict 브랜치

  • Tigers의 members에 Park 추가
  • 커밋 메시지: Edit Park to Tigers

 

4. merge하여 충돌 해결해보기

 

 

 

충돌 해결 후... (main 브랜치의 Kim 선택)

conflict 브랜치 들어가서 commit

 

 

 

 

 

5. conflict 브랜치 삭제

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.