병합은 Git의 포크된 기록을 다시 통합하는 방법입니다. 아래에 제시된 모든 명령은 현재 브랜치에 병합됩니다. 병합을 반영하도록 현재 브랜치가 업데이트되지만 대상 브랜치는 전혀 영향을 받지 않습니다. 다시 말하지만, 작동 방식
이 명령을 호출하면 지정된 브랜치 기능이 현재 브랜치에 병합되는데, 이것을 병합 커밋은 상위 커밋이 두 개 있다는 점에서 다른 커밋과 구별됩니다. 병합 커밋을 만들 때 Git은 사용자를 위해 별도의 기록을 자동으로 병합하려고 시도합니다. Git이 두 기록에서 변경된 데이터 조각을 발견하면 자동으로 결합할 수 없습니다. 이 시나리오는 버전 제어 충돌이며 Git이 작업을 계속하려면 사용자 개입이 필요합니다. 병합 준비병합을 수행하기 전에 원활한 병합을 진행하기 위해 몇 가지 준비 단계를 거쳐야 합니다. 수신 브랜치 확인
최신 원격 커밋 가져오기수신 브랜치 및 병합 브랜치가 최신 리모트 변경 사항으로 업데이트된 최신 상태인지 확인합니다. 병합앞서 설명한 "병합 준비" 단계를 수행하면 빨리 감기 병합현재 브랜치 팁에서 대상 브랜치까지의 선형 경로가 있는 경우 빨리 감기 병합이 발생할 수 있습니다. 브랜치를 "실제로" 병합하는 대신, Git은 현재 브랜치 팁을 대상 브랜치 팁까지 이동시키는 작업만으로(즉, "빨리 감기") 기록을 통합할 수 있습니다. 대상 브랜치에서 연결할 수 있는 모든 커밋을 이제 현재 커밋을 통해 사용할 수 있으므로 기록이 효과적으로 결합됩니다. 예를 들어, 일부 기능을 그러나 브랜치가 분기한 경우에는 빨리 감기 병합이 불가능합니다. 대상 브랜치에 대한 선형 경로가 없는 경우 Git은 3방향 병합을 통해 결합할 수밖에 없습니다. 3방향 병합은 전용 커밋을 사용하여 두 기록을 연결합니다. 3방향 병합이라는 이름은 Git이 브랜치 팁 두 개와 공통 원형 등 세 개의 커밋을 사용하여 병합 커밋을 만든다는 점에서 유래합니다.
첫 번째 예제는 빨리 감기 병합을 보여줍니다. 아래 코드는 새 브랜치를 만들고, 브랜치에 커밋 두 개를 추가한 다음, 빨리 감기 병합을 통해 메인 라인에 통합합니다.
이것은 장기 실행 기능용 조직 도구보다 개별적인 개발로 더 많이 사용되는 단기 토픽 브랜치의 일반적인 워크플로입니다. 또한 새로운 기능은 이제 메인 브랜치에서 액세스할 수 있기 때문에 Git의 빨리 감기 병합 동안 기록을 유지하기 위해 병합 커밋이 필요한 경우
이 명령은 지정된 브랜치를 현재 브랜치에 병합하지만 항상 병합 커밋을 생성합니다(빨리 감기 병합인 경우에도). 리포지토리에서 발생하는 모든 병합을 문서화하는 데 유용합니다. 3방향 병합다음 예제는 매우 유사하지만 기능이 진행되는 동안
백트래킹 없이는 대부분의 워크플로에서 충돌 해결병합하려는 두 브랜치가 동일한 파일의 동일한 부분에서 변경되면 Git은 어떤 버전을 사용해야 하는지 알 수 없습니다. 이런 상황이 발생하면 병합 커밋 직전에 중지되므로 수동으로 충돌을 해결할 수 있습니다. Git의 병합 프로세스에서 가장 좋은 점은 익숙한 편집/스테이지/커밋 워크플로를 사용하여 병합 충돌을 해결한다는 것입니다. 병합 충돌이 발생한 경우
충돌을 표시하는 방식병합 중에 충돌이 발생하면, Git은 충돌한 콘텐츠의 양쪽을 표시하는 시각적 표시기를 사용하여 영향을 받는 파일의 콘텐츠를 편집합니다. 시각적 마커는 <<<<<<<, ======= 및 >>>>>>>입니다. 병합하는 동안 프로젝트에서 이 표시기를 검색하여 충돌을 해결해야 하는 위치를 찾는 것이 좋습니다.
일반적으로 충돌하는 부분을 확인한 후에는 원하는 대로 병합을 수정할 수 있습니다. 병합을 완료할 준비가 되면 충돌하는 파일에서 병합 충돌은 3방향 병합인 경우에만 발생합니다. 빨리 감기 병합에서는 충돌하는 변경 사항이 있을 수 없습니다. 요약이 문서는
이 문서는 |