my_pcc_branch.patch라는 특정 패치가 있습니다.
적용하려고하면 다음과 같은 메시지가 나타납니다.
$ git apply --check my_pcc_branch.patch
warning: src/main/java/.../AbstractedPanel.java has type 100644, expected 100755
error: patch failed: src/main/java/.../AbstractedPanel.java:13
error: src/main/java/.../AbstractedPanel.java: patch does not apply
무슨 뜻인가요?
이 문제를 어떻게 해결할 수 있습니까?
답변
git apply --reject --whitespace=fix mychanges.patch
나를 위해 일했다.
설명
이 --reject
옵션은 패치를 적용하는 방법을 결정할 수없는 경우 git에 실패하지 않도록 지시하지만, 개별 덩어리를 적용하는 대신 적용 .rej
할 수없는 덩어리에 대한 거부 파일 ( )을 생성하고 생성 할 수 있습니다. Wiggle 은 “[이들] 거부 된 패치를 적용하고 단어 별 차이를 수행 할 수 있습니다”.
또한 --whitespace=fix
공백 오류에 대해 경고하고 적용 가능한 다른 덩어리를 적용하지 않고 수정하려고합니다.
두 옵션 모두 함께 패치 적용을 실패에 대해보다 강력하게 만들지 만 결과와 관련하여 추가주의가 필요합니다.
전체 설명서는 https://git-scm.com/docs/git-apply를 참조 하십시오 .
답변
msysgit@googlegroups.com 메일 링리스트의 Johannes Sixt는 다음 명령 줄 인수를 사용하여 제안했습니다.
git apply --ignore-space-change --ignore-whitespace mychanges.patch
이것은 내 문제를 해결했습니다.
답변
모든 사람이 실패하면, 시도 git apply
의 --3way
옵션을 .
git apply --3way patchFile.patch
–3way
패치가 정상적으로 적용되지 않는 경우, 3 방향 병합에 다시 가을 패치가 적용하도록되어 모양의 신원을 기록하는 경우, 우리는 가능성이있는 파일의 충돌 마커를 떠나, 로컬에서 사용할 수있는 모양이 사용자가 해결하는 작업 트리 이 옵션은 –index 옵션을 의미하며 –reject 및 –cached 옵션과 호환되지 않습니다.
일반적인 실패 사례는 가능한 한 많은 패치를 적용하며 git에서 해결하기 위해 충돌이 발생하지만 일반적으로 그렇게합니다. 아마도 reject
대안 보다 한 걸음 더 쉬울 것 입니다.
답변
이 명령은 문제를 해결하지 않고 패치를 적용하여 잘못된 파일을 *.rej
다음 과 같이 남겨 둡니다 .
git apply --reject --whitespace=fix mypath.patch
당신은 그들을 해결해야합니다. 해결되면 다음을 실행하십시오.
git -am resolved
답변
답변
Windows에 실제로 “x”비트 개념이 없으므로 Windows에서 rw-r--r--
(0644) 파일 의 체크 아웃이 msys POSIX 계층에 의해 “승격”되어 UNIX와 Windows git 클라이언트를 혼합 할 때 발생 합니다 rwx-r-xr-x
(0755). . git은 모드 차이가 기본적으로 파일의 텍스트 차이와 동일하다고 생각하므로 패치가 직접 적용되지 않습니다. 여기서 유일하게 좋은 옵션은 (사용 ) 으로 설정 core.filemode
하는 것 입니다.false
git-config
다음은 관련 정보와 관련된 msysgit 문제입니다. http://code.google.com/p/msysgit/issues/detail?id=164(2013.12.03 사본으로 다시 라우팅 됨)
답변
필자의 경우 처음에는 패치 파일을 잘못 작성하여 실제로 잘못된 방식 으로 확산시킬만큼 어리 석었습니다 . 나는 똑같은 오류 메시지로 끝났습니다.
당신이 master and do 인 경우 git diff branch-name > branch-name.patch
, 이것은 당신이하고 싶은 모든 추가 사항을 제거하려고 시도하고 그 반대의 경우도 마찬가지입니다.
따라서 지점에 체크 아웃하고 실행하십시오. git diff master > branch-name.patch