이 기사는 "Advanced Git"시리즈를 계속합니다. 트위터의 타워를 팔로우하거나 향후 기사에 대한 업데이트를 위해 뉴스 레터를 구독하십시오.
합병 갈등 : GIT 사용자, 특히 공동 작업 사용자에게 일반적인 좌절. 그러나 그들은 종종 그들이 보이는 것보다 덜 어려운 일입니다. 이 할부는 그들의 원인, 자연 및 해결을 설명합니다.
다른 소스의 변경 사항을 현재 지점에 통합 할 때 병합 충돌이 발생합니다. 이것은 지점 병합에만 국한되지 않습니다. 리바스, 체리 피킹, git pull
또는 심지어 은신처 재시체는 모두 충돌을 유발할 수 있습니다. 모든 통합이 갈등으로 이어지는 것은 아니지만, 모순이 변경되면 갈등이 발생합니다.
Git의 병합 능력은 주요 강점입니다. 대부분의 통합을 자동으로 처리합니다. 그러나 충돌이 변경 될 때 (예 : 동일한 코드 라인이 두 커밋 또는 한 분기에서 수정되고 다른 분기에서 삭제 된 파일에서 다르게 수정되면, 모호성을 해결하기 위해 인간의 개입이 필요합니다.
Git은 분명히 충돌을 병합합니다. 실패한 병합 또는 Rebase가 터미널에서 즉시보고됩니다.
<code>$ git merge develop CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.</code>
이 메시지를 놓치더라도 git status
갈등을 강조 할 것입니다. Tower와 같은 Git Guis는 갈등을 간과하지 않도록 시각적 신호를 제공합니다. 안심하십시오. git은 병합 충돌을 놓치기가 어렵습니다.
병합 충돌을 무시하는 것은 선택 사항이 아닙니다. 해결해야합니다. 당신은 두 가지 선택이 있습니다 : 갈등을 해결하거나 그 일을 일으킨 조치를 취소하십시오.
UNDOING은 종종 --abort
매개 변수를 사용하여 간단합니다 (예 : git merge --abort
, git rebase --abort
). 이것은 합병/Rebase를 역전시켜 전 분쟁 상태를 복원합니다. 파일 해결을 시작하더라도 작동합니다. 언제든지 중단하고 다시 시작할 수 있습니다.
충돌 된 index.html
파일을 살펴 보겠습니다.
git은 로 충돌하는 섹션을 표시합니다. 이 마커의 내용은 현재 분기 (헤드)에서 나온 것입니다. <code>=======
충돌하는 변화를 분리 한 다음 로 표시된 다른 지점 (예 :
develop
)의 변경 사항을 분리합니다.
귀하의 작업은 텍스트 편집기, IDE, GIT GUI 또는 MERGE 도구를 사용하여 파일을 편집하여 충돌을 해결하는 것입니다.
텍스트 편집기, IDE, GUI 또는 MERGE 도구 인 해상도 방법은 중요하지 않습니다. 최종 파일은 원하는 상태를 반영해야합니다. 간단한 갈등에는 변화를 버리는 것이 포함될 수 있습니다. 보다 복잡한 갈등은 어떤 변화를 유지 해야하는지 또는 결합하는 방법을 결정하기 위해 협력이 필요할 수 있습니다.
수동 편집은 가능하지만 전용 도구는 종종 프로세스를 간소화합니다. Git Guis는 시각적 충돌 해결 AIDS를 제공합니다. 병합 도구는 고급 차이보기 및 비교 기능 (나란히, 결합 뷰 등)을 제공합니다. git config
사용하여 선호하는 도구를 구성하고 git mergetool
로 호출하십시오.
충돌을 해결하고 변경 사항을 준비한 후 ( git add<filename></filename>
), 평소와 같이 변경 사항을 커밋하십시오.
병합 갈등은 관리 가능합니다. 원인을 이해하면 충돌을 취소하거나 해결할 수 있습니다. 실수조차 가역적입니다. 사전 분쟁 커밋으로 되돌아 가서 다시 시작하십시오.
고급 git에 대한 더 깊이 다이빙하려면 분기, 대화식 레바 제, 리플 로그, 서브 모듈 등에 비디오가 포함 된 무료 "고급 git 키트"를 탐색하십시오.
위 내용은 합병 갈등 : 그들이 무엇인지, 그리고 그들을 다루는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!