2012-02-16 5 views
2

하위 트리 병합을 수행하여 git 저장소에 하위 프로젝트를 추가했습니다. 이제 하위 프로젝트에 패치를 적용해야하지만 "git apply -v patch_name.patch"를 실행하면 아무 것도 반환되지 않습니다. 오류 메시지가없고 파일도 변경되지 않습니다.어떻게 git 서브 트리 병합에 패치를 적용 할 수 있습니까?

서브 프로젝트를 별도로 (즉, 서브 디렉토리/tmp에) 복제하고 기본 프로젝트 아래의 서브 프로젝트 디렉토리에있는 것과 비교해 보았습니다. 디렉토리는 동일합니다.

/tmp 아래의 복제본에 대해 패치를 실행하면 예상대로 적용됩니다. 문제는 서브 프로젝트 디렉토리가 서브 트리 병합의 결과라는 사실과 관련이있는 것 같습니다.

나는 새 복제본 아래에 파일을 패치 한 다음 주 프로젝트의 하위 프로젝트 디렉토리에있는 파일을 복사 할 수 있다고 생각합니다. 내가 그렇게해서는 안되는 것처럼 보입니다. 이 문제를 해결할 더 좋은 방법이 있습니까?

+0

행운이 있나요? – timB33

답변

2

git apply 매뉴얼에서 인용 : 패치가 서브 모듈의 변경을 포함

경우 다음과 같이 자식은 취급 이러한 변경 사항을 적용합니다.

--index가 지정되면 (명시 적으로 또는 암시 적으로), 서브 모듈 커밋은 적용 할 패치와 정확히 일치해야합니다. 하위 모듈 중 체크 아웃 된 모듈이있는 경우이 체크 아웃은 완전히 무시됩니다. 즉, 최신이거나 깨끗해야 할 필요는 없으며 업데이트되지 않습니다.

--index를 지정하지 않으면 패치의 하위 모듈 커밋이 무시되고 해당 하위 디렉토리가 존재하지 않거나 존재 여부 만 확인되고 가능한 경우 업데이트됩니다.

즉, git apply에 서브 슬롯에 대해주의를 기울여 --index을 제공해야합니다.

변경 사항을 강제 적용하려면 권한 변경 등을받지 않거나 하위 트리 (또는 사용자가 제안하는 수동 사본)에서 git checkout rev /path/to/dir을 사용하지 않아도 보통 patch 명령을 사용하는 것이 좋습니다.).

관련 문제