Git - 충돌 해결 (Merge Conflict)

브랜치4 : 충돌해결

참조

충돌이 일어나는 이유

  • Git 을 이용하여 협업을 할 때, 브랜치는 여러개인 경우인데 여러명이 동시에 같은 브랜치의 같은 내용을 접근하고 수정했을때 충돌이 발생합니다.

    브랜치 충돌해결 예제

    1. 실험2 브랜치 생성 및 index.html 내용 수정

  • 실험2 라는 브랜치를 생성하고 index.html 내용을 수정합니다.
  • 수정된 내용이 있으니까 실험2 브랜치를 커밋합니다.

1

2. master 브랜치 체크아웃 후 index.html 내용 수정

  • master 브랜치에서 index.html 내용을 실험2 브랜치에서 수정한 동일한 위치의 다른 내용을 입력한 후 commit 합니다.

2

3. 실험2의 내용을 master 브랜치로 병합(Merge) 진행

  • 브랜치 작업이 완료되면, 실험2 의 branch를 master branch로 병합 진행합니다.

4. 충돌 발생

  • 서로 다른 실험2, master 2개의 브랜치에서 동일한 index.html 파일을 수정하다가 git에서는 최종적으로 어떤것을 우선으로 병합해야하는지를 몰라서 Merge Conflict 발생
  • 충돌이 발생하면, Git은 작업을 멈추고 사람에게 작업을 위임하고 사람이 직접 Conflict를 해결하도록 위임합니다.

3

5. 충돌된 파일의 내용

  • 충돌이 일어난 파일을 실행시키면 <<<<<<, >>>>>>> 해당 기호들이 적혀있는것을 확인할 수 있습니다.
  • <<<<<<< HEAD 구문 ======= 이 기호 안에 있는 구문의 내용은 현재 선택되어 있는 브랜치의 내용이 HEAD 입니다.
  • >>>>>>> 실험2 구문 ======= 이 기호 안에 있는 구문의 내용은 실험2 의 브랜치의 내용을 나타냅니다.
  • 최종적으로 여기서 필요한 내용을 사용자가 직접 선택을 해서 구문을 남기고 정리를 해야합니다.

4

6. 충돌이 일어난 파일 내용 수정 후 Git에게 충돌 해결 알리기

  • Merge 진행 중, 충돌이 일어난 파일의 내용을 수정후 충돌을 해결했다면 Git에게 충돌해결결과를 알려줄 수 있습니다.
  • 파일 수정이 완료되면 SourceTree 에서 WorkingCopy 영역에 수정된 파일이 나타납니다.
  • 해당 파일을 선택하여 마우스 우클릭 진행후 Resolve Conflicts -> Mark Resolved 속성을 선택하여 Git에게 충돌이 해결되었다고 알려줍니다.

5

7. 충돌 해결된 파일 commit 하기

  • Resolve Conflicts 를 완료하면 해당 파일은 index, Staging 영역으로 넘어가 commit 할 준비를 마칩니다.
  • 그리고 commit을 진행하면 commit 내용 입력란에 자동으로 Conflicts 관한 내용이 입력된 것을 확인할 수 있습니다.

6

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

이 글을 공유하기

댓글

Designed by JB FACTORY