GIT

충돌 해결

Strickland 2024. 4. 28. 15:20

현재 브랜치 상태

Main 브랜치에서는 Tigers, Leopards, Panthers 를 수정 

conflict-1 브랜치에서는 Tigers 수정 

conflict-2 브랜치는 2번의 커밋으로 나눠서 Leopards 와 Panthers 수정

 

1. merge 충돌 해결하기

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

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

명령어 입력 시

 

conflict-1 과 main 브랜치는 똑같은 tiger 파일에서 수정했음으로 충돌이 발생한다.

 

tigers.yaml

conflict-1 브랜치에선 manager 를 Deborah 로 변경했었고 main 브랜치 에선 Kenneth 로 변경했었다.

 

  • Accept Current Change: main 브랜치에 있는 내용 선택
  • Accept Incoming Change: conflict-1 내용 선택
  • Accept Both Changes: 두 내용 모두 선택 
  • Compare Changes: 변경사항 보기

 

충돌하는 내용이 너무 많아서 당장 merge 는 중단 하고 싶으면 아래의 명령어 입력 

git merge --abort

 

충돌을 모두 해결했다면 아래의 명령어 실행

git add .
git commit

 

 

 

2. rebase 충돌 해결하기

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

충돌을 해결하고 아래의 명령어 입력

git add .
git rebase --continue

git rebase --continue 실행할때 마다 새로운 commit 이 생성된다 .

rebase 가 끝날때까지 위의 명령어 두개를 반복해주면 된다.

 

리베이스 종료시 커밋이 1개만 추가 된 이유는 충동 해결 중 두번째 것에서는 current, 즉 main 브랜치의 것을 채택했기 때문에 커밋으로 추가 할 이유가 없기 때문이다.

 

main 브랜치고 이동 한 후에 merge 하고 conflict 브랜치들을 삭제 해주자

git switch main
git merge conflict-2
git branch -d conflict-1
git branch -d conflict-2

 

'GIT' 카테고리의 다른 글

원격 저장소 사용하기  (0) 2024.04.29
checkout  (0) 2024.04.29
merge 와 rebase  (0) 2024.04.28
reset 과 revert  (0) 2024.04.26
commit + diff  (0) 2024.04.25