git 당김 후 충돌을 어떻게 해결합니까?
문제
나는 a. 이후에 약간의 갈등을 해결해야한다 git pull
.
$ git pull
CONFLICT (rename/add): Renamed vignette_generator_mashed.h->vision_problem_8.h in 49423dd0d47abe6d839a783b5517bdfd200a202f. vision_problem_8.h added in HEAD
Added as vision_problem_8.h~HEAD_1 instead
Removed vignette_generator_cross_square.cc
Automatic merge failed; fix conflicts and then commit the result.
그래서 나는 그것을 조금 검색하고 사람들이 사용하는 것을 발견했습니다. git mergetool
. 하지만 여기에 내가 얻은 것들이 있습니다.
$ git mergetool
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
No files need merging
$ git mergetool opendiff
merge tool candidates: meld kdiff3 tkdiff xxdiff meld gvimdiff emerge opendiff emerge vimdiff
opendiff: file not found
그래서 내가 뭔가를 설치해야한다는 뜻인가요?
단순히 버전을 원한다면 어떻게해야합니까? git pull
모든 것을 덮어 쓰기 위해?
해결책
당신은 이것을 위해기구가 필요하지 않습니다. 수동으로 쉽게 해결할 수 있습니다.
당신의 충돌은 당신의 지역 커밋이 파일을 추가했다는 것입니다. vision_problem_8.h
, 원격 커밋도 vignette_generator_mashed.h
. 당신이 달리면 ls -l vision_problem_8.h*
당신은 아마도 Git이 당신을 위해 보존 한이 파일의 여러 버전을 볼 수 있습니다. 그들 중 하나는 당신의 것이고 다른 하나는 원격 버전입니다. 상충되는 내용을 해결하기 위해 편집기 또는 원하는 도구를 사용할 수 있습니다. 완료되면 git add
영향을받는 파일과 병합을 완료하기 위해 노력합니다.
원격 커밋의 버전을 사용하려면 제자리에 쓰지 않은 사본을 옮기고 git add
그것.
병합 도구와 관련하여 살펴보십시오 git help mergetool
. 기본적으로, 포함 된 각 가능성을 찾을 때까지 각각의 가능성을 실행하거나 명시 적으로 구성한 가능성을 사용하려고합니다.
다른 팁
나는 당신이 당신의 명령 줄에서 "-t"스위치를 잊어 버렸다고 생각합니다. git 도움말 페이지에 따르면 "-t, --tool ="을 나타 내기 때문에 의도 한 바를 만듭니다.
노력하다:
git mergetool -t gvimdiff
물론 당신은 광산 대신 선호하는 병합 도구를 사용할 수 있습니다. meld도 훌륭합니다 ...
프로젝트의 하위 디렉토리에서 병합을 실행하면 GIT가 전체 프로젝트의 병합을 실행합니다. 그러나 Mergetool은 작업 디렉토리 또는 아래에 파일 만 볼 수 있습니다. 따라서이 시나리오가 발생하면 프로젝트의 최상위 디렉토리에서 충돌 해결을 실행하려고합니다.
Git Pull의 버전이 모든 것을 덮어 쓰기를 원한다면 어떻게해야합니까?당신이 원한다면 당신이 사용해야한다면 :
git fetch
git reset --hard origin/your-branch-name