이전에도 SVN을 사용할 때 이 문제에 대해 생각해 보았지만 당시에는 이해하지 못했고 버그도 발생하지 않았습니다.
이제 Git을 배우면서 같은 질문이 있어서 물어봤습니다.
질문:
브랜치를 병합할 때 충돌이 없으면 Git이 자동으로 병합하는 코드에 버그가 있나요?
병합 중에 Git이 감지한 충돌은 두 편집 내용이 같은 줄에 있는지, 두 편집 내용이 반대 작업을 하는지(하나는 동일한 코드를 추가하고 다른 하나는 삭제)와 같은 편집 충돌이므로 당연히 Git은 그렇지 않습니다. 코드 자체의 논리에도 신경 쓸 수 없습니다.
그래서 병합 후 코드의 정확성을 확인해야 한다고 생각합니다. 이는 병합할 때마다 두 브랜치에서 해결한 문제가 병합 후 해결되지 않은 상태인지, 새로운 버그가 발생했는지 확인하는 것과 같습니다. 일이 너무 많지 않나요?
이것을 실제 사용해보면 어떨까?
淡淡烟草味2017-06-17 09:17:34
Baidu가 있는 경우 유사한 정보가 표시되어야 합니다. 개발이 브랜치에 있더라도 트렁크에서 너무 멀리 벗어나지 않도록 하려면 트렁크에서 브랜치로 자주 병합해야 합니다.
팀에서 절차대로 진행하시면 큰 문제는 없을 것 같습니다.
学习ing2017-06-17 09:17:34
여러 사람이 동일한 코드를 편집하는 경우 Git은 병합 충돌을 보고하며 이를 수동으로 해결해야 합니다. Git에서는 이러한 코드를 처리하는 방법을 알 수 없으며 이는 불가피합니다. 실제 다중 사용자 공동 작업 프로젝트에서는 일반적으로 모든 사람이 모듈로 개발하고 동일한 파일을 변경하기 전에 공통 모듈을 업데이트하려고 합니다.
병합 후 충돌이 보고되지 않으면 동일한 코드가 많이 변경되지 않았음을 의미하므로 병합의 정확성을 확인할 필요가 없습니다. 논리적 버그를 발생시키는 병합 코드에 대해서는 검토가 필요합니다.
phpcn_u15822017-06-17 09:17:34
물론 가능합니다. a b c 세 가지 방법을 사용해야 합니다. 세 사람 중 누구도 다른 사람이 변경했다는 사실을 모른다고 가정하면 git은 이를 충돌로 간주하지 않습니다. ; 하지만 이 기능이 여전히 세 사람이 원하는 기능인지 확인할 수 있나요?
过去多啦不再A梦2017-06-17 09:17:34
아니요, git merge에는 두 가지 상황이 있기 때문입니다. 첫째: 파일에서 두 사람이 동시에 동일한 코드 조각을 수정하면 git merge가 충돌을 보고합니다. 수동 병합이 필요합니다. 둘째: 두 사람이 동일한 파일의 서로 다른 코드 세그먼트를 변경하는 경우. git은 자동으로 병합됩니다. 버그가 있는지 없는지는 전적으로 코드를 작성한 사람의 문제입니다. 버그가 있고, 합병 이후에도 자연스럽게 버그가 생기기 마련입니다. 버그가 없으며 병합 후에도 버그가 발생하지 않습니다. 다른 사람을 비난하지 마십시오!
给我你的怀抱2017-06-17 09:17:34
이것은 버그가 아니라 冲突
이라고 합니다. 갈등 해결:
다른 사람의 버전을 사용하세요
자신만의 버전을 사용하세요
수동 병합.
충돌을 피하는 가장 일반적인 방법은 수정하기 전에 먼저 pull
로컬 브랜치를 사용하여 충돌 가능성을 줄이는 것입니다
怪我咯2017-06-17 09:17:34
글쎄, git은 버전 관리 도구일 뿐인데, 코드를 병합했는데 버그가 발생한다면 이는 결코 git의 잘못이 아니며 테스트 코드를 작성하여 해결해야 합니다.