Git - 충돌 해결 (Merge Conflict)
- 버전관리
- 2021. 5. 3. 18:27
브랜치4 : 충돌해결
참조
충돌이 일어나는 이유
- Git 을 이용하여 협업을 할 때, 브랜치는 여러개인 경우인데 여러명이 동시에 같은 브랜치의 같은 내용을 접근하고 수정했을때 충돌이 발생합니다.
브랜치 충돌해결 예제
1. 실험2 브랜치 생성 및 index.html 내용 수정
- 실험2 라는 브랜치를 생성하고 index.html 내용을 수정합니다.
- 수정된 내용이 있으니까 실험2 브랜치를 커밋합니다.
2. master 브랜치 체크아웃 후 index.html 내용 수정
- master 브랜치에서 index.html 내용을 실험2 브랜치에서 수정한 동일한 위치의 다른 내용을 입력한 후 commit 합니다.
3. 실험2의 내용을 master 브랜치로 병합(Merge) 진행
- 브랜치 작업이 완료되면, 실험2 의 branch를 master branch로 병합 진행합니다.
4. 충돌 발생
- 서로 다른 실험2, master 2개의 브랜치에서 동일한 index.html 파일을 수정하다가 git에서는 최종적으로 어떤것을 우선으로 병합해야하는지를 몰라서 Merge Conflict 발생
- 충돌이 발생하면, Git은 작업을 멈추고 사람에게 작업을 위임하고 사람이 직접 Conflict를 해결하도록 위임합니다.
5. 충돌된 파일의 내용
- 충돌이 일어난 파일을 실행시키면 <<<<<<, >>>>>>> 해당 기호들이 적혀있는것을 확인할 수 있습니다.
- <<<<<<< HEAD 구문 ======= 이 기호 안에 있는 구문의 내용은 현재 선택되어 있는 브랜치의 내용이 HEAD 입니다.
- >>>>>>> 실험2 구문 ======= 이 기호 안에 있는 구문의 내용은 실험2 의 브랜치의 내용을 나타냅니다.
- 최종적으로 여기서 필요한 내용을 사용자가 직접 선택을 해서 구문을 남기고 정리를 해야합니다.
6. 충돌이 일어난 파일 내용 수정 후 Git에게 충돌 해결 알리기
- Merge 진행 중, 충돌이 일어난 파일의 내용을 수정후 충돌을 해결했다면 Git에게 충돌해결결과를 알려줄 수 있습니다.
- 파일 수정이 완료되면 SourceTree 에서 WorkingCopy 영역에 수정된 파일이 나타납니다.
- 해당 파일을 선택하여 마우스 우클릭 진행후 Resolve Conflicts -> Mark Resolved 속성을 선택하여 Git에게 충돌이 해결되었다고 알려줍니다.
7. 충돌 해결된 파일 commit 하기
- Resolve Conflicts 를 완료하면 해당 파일은 index, Staging 영역으로 넘어가 commit 할 준비를 마칩니다.
- 그리고 commit을 진행하면 commit 내용 입력란에 자동으로 Conflicts 관한 내용이 입력된 것을 확인할 수 있습니다.
728x90
'버전관리' 카테고리의 다른 글
Git - 원격저장소 만들기 (0) | 2021.05.05 |
---|---|
Git - 충돌 최소화 (0) | 2021.05.03 |
Git - Merge(병합) (0) | 2021.05.03 |
Git - 브랜치 만들기 (0) | 2021.05.03 |
Git - 되돌리기 5 : Revert (0) | 2021.05.01 |
이 글을 공유하기