문제

우리는 이전에 주요 리포지토리에서 많은 서브 모듈을 사용했지만 프로젝트의 유지 관리 가능성을 높이기 위해 실험 분기를 시작하여 모두 하위 트리로 교체했습니다.

이것은 잘 작동했습니다. 그러나 이제 하위 트리 중 하나를 업데이트하려고 할 때 업데이트를 하위 트리조차없는 완전히 잘못된 디렉토리로 병합합니다.

분기 "하위 트리"가 실험 분기를 포함하는 주요 저장소는 다음과 같습니다. git : //github.com/hugowetterberg/goodold_drupal.git

업데이트로 병합하려는 저장소 : git : //github.com/voxpelli/drupal-oembed.git

수행하여 병합 : git merge -s subtree oembed/master

업데이트 경로는 다음과 같이 병합되어야합니다. 사이트/ALL/MODULES/OEMBED/

그들이 병합 된 경로 : 모듈/애그리 게이터/번역/

하위 트리에 업데이트를받는 방법에 대한 아이디어가 있거나 오류가 무엇인지에 대한 아이디어가 있습니까?

도움이 되었습니까?

해결책

불행히도 이것은 "git merge -s subtree"코드의 버그 (또는 누락 된 기능)입니다. 실제로 추측 합병하려는 하위 트리. 일반적으로 이것은 마술처럼 옳은 것으로 판명되지만 하위 트리에 많은 변화가 포함되어 있거나 원래 비어 있거나 무엇이든간에 화려하게 실패 할 수 있습니다.

주변에서 작업하는 가장 좋은 방법은 다음과 같습니다.

  1. 위와 같이 파일을 병합하십시오.

  2. 결과적인 파일을 수동으로 이동하는 파일을 수동으로 이동하십시오 ~해야 한다 갔다.

  3. git commit -a --amend 병합 커밋을 수정합니다.

이 디렉토리가 끊임없이 믿을 수없는 양의 플럭스가 아니라면 미래의 합병은 아마도 잘 작동 할 것입니다.

실험 "git 하위 트리"명령에는 a --prefix 이를 무시할 수있는 매개 변수를 사용하지만 불행히도 현재는 작동하지 않습니다 ( "Git Merge -S Subtree"기능을 중심으로 작업해야하며 수행 할 시간이 없었기 때문입니다).

어쨌든, 이것은 드문 상황이어야하며 동일한 프로젝트의 향후 합병에도 해결 방법이 필요하지 않습니다.

다른 팁

GIT 버전 1.7.9.5

git pull -s subtree <remote name> <remote branch>

(Merge는 잘못된 디렉토리로 들어갔다)

git reset --hard HEAD^
git pull -s subtree -Xsubtree=correct/directory <remote name> <remote branch>

디렉토리에 후행 슬래시가 없습니다.

감사 Apenwarr

http://git.661346.n2.nabble.com/patch-0-8-the-xours-xtheirs-xssubtree-dir-td4069081.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top