자식 : 패치가 적용되지 않습니다 있습니다. 적용하려고하면 다음과 같은 메시지가 나타납니다. $ git

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

답변

여기에 제안 된 솔루션을 사용해보십시오 : https://www.drupal.org/node/1129120

patch -p1 < example.patch

이것은 나를 도왔다.


답변

Windows에 실제로 “x”비트 개념이 없으므로 Windows에서 rw-r--r--(0644) 파일 의 체크 아웃이 msys POSIX 계층에 의해 “승격”되어 UNIX와 Windows git 클라이언트를 혼합 할 때 발생 합니다 rwx-r-xr-x(0755). . git은 모드 차이가 기본적으로 파일의 텍스트 차이와 동일하다고 생각하므로 패치가 직접 적용되지 않습니다. 여기서 유일하게 좋은 옵션은 (사용 ) 으로 설정 core.filemode하는 것 입니다.falsegit-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