충돌이 일어나는 이유
여러 개발자가 동일한 콘텐츠를 편집하려고 하는 경우가 있습니다. 개발자 B가 편집 중인 코드를 개발자 A도 편집하려고 하면 충돌이 발생할 수 있습니다.
예제 충돌 시나리오
원본 A B C를 각자의 브랜치에서 영재는 A B' C로 수정하였고 서정은 A B'' C로 수정하였다. 이때 영재와 서정의 코드를 병합할때 충돌이 발생했다. 충돌한 이유는 서로 B를 수정했는데 이때 컴퓨터는 B, B', B''중 어떤 코드를 남겨야 할지 모르기 때문이다.
1. yeongjae branch에서 B를 B'로 수정하고 commit
2. seojeong branch에서 B를 B''로 수정하고 commit
3. seojeong branch와 yeongjae branch를 병합 (충돌이 발생)
충돌이 발생한 부분이 README.md라고 알려준다
4. vim README.md를 통해 충돌 코드 확인
다음 코드를 분석해보면
<- 현재 체크아웃한 브랜치(seojeong)의 소스코드
<- 병합하려는 브랜치(yeongjae)의 소스코드
구조를 도식화 하면 다음과 같다
5. 충돌 해결
vim를 사용해 중복되는 코드 중 사용하고자 하는 코드만 남기고 저장한다.
수정한 README.md를 git add 하고 git status로 확인해보면
"충돌이 해결 되었고 commit으로 merge를 끝낼수 있다" 라는 메시지가 나온다
git commit을 입력하면
'yeongjae' branch 가 'seojeong' branch로 병합되었다는 메시지가 나온다.
vscode를 사용하면 좀더 편하게 충돌을 해결할 수 있다.
Reseolve in Merge Editor를 사용해서 편하게 편집가능
git Gragh으로도 확인
마지막으로 변경사항을 repository에 push 해보자
compare & pull request 하고
Merge pull request
병합한 branch의 변경사항이 잘 저장되었다
'git \ github' 카테고리의 다른 글
[git][github] fetch와 Pull (0) | 2023.10.04 |
---|---|
[git][github] branch - Rebase (0) | 2023.09.08 |
[git][github] branch 병합(merge) (0) | 2023.09.07 |
[git][github] branch와 branch생성 (0) | 2023.09.07 |
[git][github] git 3가지 영역 (0) | 2023.09.05 |