Git

Git - 병합 충돌(Merge Conflicts)

Namiz_IT 2024. 7. 27. 10:21

 

병합 충돌 소개

 이제 같은 파일의 같은 부분을 수정하여 병합 충돌이 발생하는 경우에 대해 알아보자. 이전 글에서 처럼 병합 충돌은 두 브랜치에서 동일한 파일의 같은 부분에 다른 변경 사항이 적용되었거나 한 브랜치에서 삭제된 파일이 다른 브랜치에서 편집된 경우 발생한다. 이러한 경우 Git은 파일을 자동으로 병합할 수 없으므로 수동으로 병합해야 한다.

병합 충돌은 병합 과정과 리베이스 과정 모두에서 발생할 수 있다. 병합 충돌은 프로젝트 작업 중에 일반적으로 발생할 수 있는 현상이며, 이러한 상황이 발생했다고 해서 누군가 잘못한 것이 아니다. 병합 충돌을 해결하는 것은 Git 프로젝트 작업의 일부이다.


병합 충돌 해결 방법

 병합 충돌이 발생하면 충돌이 발생한 파일들 각각에 특수 마커 세트가 표시되며 이 마커는 충돌 위치를 나타낸다. 이러한 마커는 충돌 마커라고 불리며 7개의 왼쪽 꺾쇠 기호(<<<<<<<), 7개의 등호(=======), 7개의 오른쪽 꺾쇠 기호(>>>>>>>)로 구성되어 있고, 병합에 관련된 브랜치에 대한 참조도 포함한다.

 

병합 충돌을 해결하는 데는 두 가지 단계가 있다.

  1. 유지할 내용을 결정하고, 내용을 수정하고, 충돌 마커를 제거한다.
  2. 수정한 파일을 스테이징 영역에 추가하고 변경 사항을 커밋한다.

병합 충돌 해결 프로세스

 앞서 언급했듯이 병합 충돌을 해결하는 데는 두 가지 단계가 있다. 이 섹션에서는 각 단계를 자세히 살펴보자.

1 단계 :

 병합 충돌이 발생하면 Git은 충돌이 발생한 위치를 나타내는 특수 마커를 삽입한다. 첫 번째 단계는 유지할 내용을 결정하고, 파일에서 충돌이 발생한 내용을 편집하고, 충돌 마커를 제거하는 것이다. 필요한 변경 사항을 모두 적용한 후에는 텍스트 편집기에서 파일을 저장해야 한다.

2 단계 :

 내용을 편집한 후에는 두 번째 단계인 업데이트된 파일을 스테이징 영역에 추가하고 커밋하는 단계로 넘어간다. 하나의 파일에서만 병합 충돌이 발생했으면 하나의 파일만 스테이징 영역에 추가하면 된다. 그러나 여러 파일에 병합 충돌이 발생할 수 있으며, 이 경우에는 수정된 모든 파일을 스테이징 영역에 추가해야 한다.

병합 중단

병합 과정에서 언제든지 병합을 계속 진행하지 않기로 결정하면 git merge --abort 옵션을 사용하여 병합을 중단할 수 있다. 이렇게 하면 모든 파일이 병합 전 상태로 되돌아간다.

git merge --abort  병합 프로세스를 중단하고 병합 전 상태로 되돌림

원격 저장소와 동기화 유지하기

 

 병합 충돌이 있는 경우 두 브랜치에서 변경 사항을 통합하는 데 더 많은 시간이 걸린다.

 원격 저장소에서 관련 브랜치의 변경 사항을 최신 상태로 유지하는 것이 중요하다. 나중에 해결해야 할 잠재적인 병합 충돌 수를 줄일 수 있다.

 새로운 브랜치를 만들 때는 원격 저장소에서 관련된 최신 브랜치를 기반으로 하는 것이 좋다. 일반적으로 이것은 main 브랜치(또는 팀에서 기본 개발 라인으로 사용하는 브랜치)이다. 그러나 팀의 Git 워크플로우에 따라 다른 브랜치일 수도 있다.

기존 브랜치에서 작업하는 경우 원격 저장소에서 관련 브랜치에 대한 변경 사항을 병합하여 브랜치를 업데이트하는 것이 좋다. 다른 사람과 같은 브랜치에서 작업하는 경우 해당 브랜치에서 이루어진 변경 사항을 항상 가져와 병합한 후에 작업을 계속해야 한다.


 
반응형