GIT

GIT : 브랜치 병합 충돌이 발생하는 경우, 개요

A Thin Idea 2023. 1. 24. 12:00
반응형

GIT : 브랜치 병합 충돌이 발생하는 경우, 개요 1

 

머지 병합 충돌

두 브랜치를 병합할 때, 깃은 자동적으로 모든 변경사항들을 병합하기 위해 최선을 다합니다. 빨리 감기 병합이든 아니면 병합 커밋을 만드는 것이든 자동적으로 병합하기 위해 애씁니다. 하지만 변경사항들이 충돌한다면, 브랜치에서 누군가가 파일을 수정했고, 병합하고 있는 두 번째 브랜치에서 누군가가 동일한 파일을 삭제한 경우 발생합니다.

또다른 상황은 만약 한 브랜치에서 어떤 파일의 77번째 라인을 편집하고, 누군가는 다른 브랜치에서 같은 작업을 할 수도 있습니다. 다른 브랜치에서 동일한 파일에서 똑같이 77번째 라인을 편집합니다. 깃은 자동적으로 병합하는 방법을 알지 못해서 어떤 것을 유지하고 어떤 것을 제거해야 하는지 결정하지 못합니다.

그래서 여기서 병합 충돌이 발생합니다. 직접 문제를 해결해야 하는데 큰 문제는 아닙니다. 먼저 프로세스를 보여드리겠습니다. Git merge를 실행할 때, 충돌이 생기면, 이런 메시지를 보게 되는데, 충돌이라고 나오고, 특정 파일에서 충돌이 발행해서 자동 병합은 실패했고 충돌을 해결한 다음에 결과를 커밋하라고 나옵니다.

 

 

GIT : 브랜치 병합 충돌이 발생하는 경우, 개요 2

 

 

단계 과정

충돌이 발생했다고 깃이 알려줍니다. 그러면 충돌이 발생한 파일을 열어 해결해야 합니다 그런 다음 변경사항을 커밋합니다. 충돌이 발생한 파일은 표시됩니다. 충돌이 발생한 곳을 나타내는 새로운 컨텐츠가 있습니다. 그래서 파일을 열었을 때, HEAD 부분에 이상한 것과 브랜치 이름을 볼 수 있습니다.

물론 데모를 보여드릴 겁니다. 이 기호가 나타내는 것은 현재 제가 있는, HEAD가 가리키는 브랜치에서 가져올 컨텐츠이고 병합해서 넣으려는 기준 브랜치이며, 작은 화살촉과 ==== 사인으로 표시됩니다. 이것이 다이어그램에서 가졌었던 것이고, master 브랜치에서 변경했던 것입니다. 그리고 여기 이 부분은 bugfix에서 온 것으로 병합해서 넣으려는 것입니다.

어떤 것을 유지하고 어떤 것을 삭제할 지전적으로 달려있습니다. 해결하고 이 충돌 표시와 기호를 제거한 다음 파일을 저장하고 다시 돌아가서 변경사항을 등록하고 커밋합니다.

충돌이 발생하면 깃은 충돌이 생긴 파일을 알려줍니다, 그러면 그 파일을 열어서 편집합니다. 충돌을 어떻게 해결하길 원하는지 파악합니다. 이 세 라인을 모두 원하는지 아니면 이 두 라인 아니면 이 라인만 원하는지 그것들을 결합합니다. 코드 작성은 작성자에게 달려있습니다. 보통 무엇이 문제인지, 어떤 것이 거기에 필요한지 파악해야 합니다.

그리고 검토해야 하고 주의해야 합니다. 포인트는 여러분이 그것을 해야 한다는 것이고 깃이 결정해주지는 않습니다. 아주 중요한 사항입니다. 검토하고 그런 충돌들을 제거하고, 어떤 것을 유지해야할 지 결정합니다 그런 다음 충돌 표시를 제거하고 저장합니다. 이제 변경사항을 등록하고 커밋해서 완료합니다.

반응형