git에서 충돌이 발생하는 이유는 파일을 병합할 때 동일한 파일의 동일한 위치가 수정되었으며 내용이 다르기 때문입니다. 즉, 제출된 두 브랜치의 동일한 파일이 다른 작업으로 병합되었기 때문입니다. , 그래서 충돌이 발생합니다. 충돌을 일으키는 일반적인 작업에는 두 개의 지점을 병합하고 원격 창고 코드를 로컬로 가져오는 것이 포함됩니다.
이 문서의 운영 환경: Windows 10 시스템, Git 버전 2.30.0, Dell G3 컴퓨터.
1. 일반적인 충돌 작업:
두 브랜치 병합
원격 창고 코드를 로컬
2. 충돌 원인 :
파일 병합 시, 같은 파일의 같은 위치를 수정하여 내용이 다를 경우 충돌이 발생합니다
셋. 해결 단계:
1.git 상태
2.vim src/main/java/a.txt로 충돌 파일을 확인합니다(a.txt가 충돌 파일이라고 가정하면 파일의 전체 경로여야 합니다). , 충돌 부분을 수동으로 수정
3.git add src/main/java/a.txt 는 Git에게 충돌이 해결되었음을 알려줍니다
4.git commit -m 'resolve conflict' (충돌 해결은 주석이며 사용자 정의 가능)
제출된 두 개의 브랜치가 동일한 위치에 있는 동일한 파일에 대한 서로 다른 작업이 병합됩니다.
실제 데모
(1) Scenario
로컬 라이브러리의 두 개의 서로 다른 브랜치가 동일한 파일과 동일한 코드 블록을 수정합니다. 두 브랜치가 수정 사항을 병합합니다. 마스터 브랜치에서 마스터가 두 번째 브랜치의 코드를 병합하면 병합 충돌이라는 오류가 보고됩니다.
(2) 로컬 라이브러리
<1>master 브랜치
<2> 2개의 브랜치 생성
<3> :
b브랜치 브랜치:
(3) 브랜치를 병합할 때 충돌이 발생함
Merge aBranch Branch(aBranch 브랜치를 현재 마스터 브랜치에 병합) :
참고:
git merge: 기본적으로 Git은 "fast-farward merge"를 수행하고 Master 분기를 Development 분기로 직접 가리킵니다. --no-ff 매개변수를 사용한 후 일반 병합이 수행되고 마스터 분기에 새 노드가 생성됩니다. 버전 진화의 명확성을 보장하기 위해 이 방법을 채택하는 것이 좋습니다.
bBranch 브랜치를 다시 병합하고 충돌 유발:
mergeTest.txt 파일 내용:
(4) 충돌 해결
현재 브랜치(마스터)에서 충돌 파일을 찾아 수정합니다. 충돌 코드를 직접 추가하고 커밋합니다.
참고: 간단한 방법입니다. vim을 사용하여 수정하고 cat을 사용하여 충돌 파일을 확인하세요. (git에서 자동으로 생성한 충돌 코드 구분자를 삭제 주의하세요)
(5) 충돌 해결 완료
참고: 제출하거나 병합하면 git 노드가 생성됩니다. 각 노드는 코드 버전에 해당합니다.
추천 학습: "Git Tutorial"
위 내용은 Git이 충돌을 일으키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!