문제
나는 git과 함께 p4merge를 사용하려고 노력하고 있지만 다음과 같이 받고 있습니다.
P4Merge 시작 오류 : "Path/MyFile"은 유효하지 않은 파일입니다. (여기에는 파일의 기본, 로컬, 원격 및 표준 버전이 나와 있습니다).
Git은 충돌에 대해 말해줍니다. 그런 다음기구 구성 (P4Merge)을 시작하고 싶은지 묻고 위의 오류가 발생합니다.
추가 참고 사항 : 모든 파일에서 발생합니다!
이것이 무엇인지, 어떻게 고치는 지에 대한 단서가 있습니까?
해결책
이것은 Windows 7에서 MSYSGIT를 사용하여 나에게 효과적이었습니다.
git config --global merge.tool p4merge
git config --global mergetool.p4merge.cmd 'p4merge $BASE $LOCAL $REMOTE $MERGED'
왜 그런지 잘 모르겠지만 인용문은 나를 위해 일을 망쳤습니다.
다른 팁
당신은 할 것입니다 여기를 봐 diffmerge 또는 kdiff3에 대한 내 구성.
이를 바탕으로 P4Merge를 추천합니다.
git config --global merge.tool merge
git config --global mergetool.merge.cmd "merge.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
그리고 merge.sh
래퍼 (래퍼) PATH
환경 변수), 그렇지 않은 경우 사례를 고려할 수 있습니다. BASE
존재합니다.
(파일이 두 개의 다른 분기에서 만들어지면 병합되면 해당 파일의 공통 조상은 없습니다).
#!/bin/sh
# Passing the following parameters to mergetool:
# local base remote merge_result
alocal=$1
base=$2
remote=$3
result=$4
if [ -f $base ]
then
p4merge.exe -dl "$base" "$alocal" "$remote" "$result"
else
p4merge.exe -dl "$result" "$alocal" "$remote" "$result"
fi
당신은 주목할 수 있습니다 :
- 사용
PWD
병합 구성에서 - "사용"
merge
"merge.tool 이름의 이름으로 (실제 도구가 호출되기 때문에merge.sh
원하는 수의 병합 도구간에 전환 할 수있는 스크립트) - 주변의 이중 인용문 사용
$base
,$alocal
,$remote
,$result
스크립트 내에서 - "기본"파일의 존재에 따라 도구를 호출하는 조건부 경로.
- 항상 매개 변수로 병합 할 파일이 항상 필요합니다 ( '기본'이 존재하지 않더라도 ...)
방금 테스트했습니다. P4Merge 만 다운로드하여 설치하십시오 -섹션 클라이언트/비주얼 병합 도구-다른 P4 제품이 설치되어 있지 않더라도).
위에서 설명한 설정에서 MSYSGIT1.6.3, DOS 세션 또는 GIT 배쉬 세션 :
그것은 단지 작동합니다TM.
업데이트 MSYSGIT 1.7.x
Benjol 의견에 언급 :
P4Merge는 이제 MSYSGIT에 의해 기본적으로 지원됩니다.
이것은 당신이 그냥 할 수 있음을 의미합니다 :
git config --global merge.tool p4merge
# and I recommend
git config --global mergetool.keepBackup false