문제

나는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top