브랜치 간 충돌
- 상황 -- 파일의 같은 위치에 다른 내용이 입력된 상황
상황 만들기
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 |
댓글