>  기사  >  개발 도구  >  Git이 충돌을 일으키는 이유는 무엇입니까?

Git이 충돌을 일으키는 이유는 무엇입니까?

WBOY
WBOY원래의
2022-06-24 10:38:1710857검색

git에서 충돌이 발생하는 이유는 파일을 병합할 때 동일한 파일의 동일한 위치가 수정되었으며 내용이 다르기 때문입니다. 즉, 제출된 두 브랜치의 동일한 파일이 다른 작업으로 병합되었기 때문입니다. , 그래서 충돌이 발생합니다. 충돌을 일으키는 일반적인 작업에는 두 개의 지점을 병합하고 원격 창고 코드를 로컬로 가져오는 것이 포함됩니다.

Git이 충돌을 일으키는 이유는 무엇입니까?

이 문서의 운영 환경: Windows 10 시스템, Git 버전 2.30.0, Dell G3 컴퓨터.

git 충돌이 발생하는 이유

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.