업데이트를 내 하위 트리에 병합 할 때 혼란 스러웠습니다
-
19-09-2019 - |
문제
우리는 이전에 주요 리포지토리에서 많은 서브 모듈을 사용했지만 프로젝트의 유지 관리 가능성을 높이기 위해 실험 분기를 시작하여 모두 하위 트리로 교체했습니다.
이것은 잘 작동했습니다. 그러나 이제 하위 트리 중 하나를 업데이트하려고 할 때 업데이트를 하위 트리조차없는 완전히 잘못된 디렉토리로 병합합니다.
분기 "하위 트리"가 실험 분기를 포함하는 주요 저장소는 다음과 같습니다. 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"코드의 버그 (또는 누락 된 기능)입니다. 실제로 추측 합병하려는 하위 트리. 일반적으로 이것은 마술처럼 옳은 것으로 판명되지만 하위 트리에 많은 변화가 포함되어 있거나 원래 비어 있거나 무엇이든간에 화려하게 실패 할 수 있습니다.
주변에서 작업하는 가장 좋은 방법은 다음과 같습니다.
위와 같이 파일을 병합하십시오.
결과적인 파일을 수동으로 이동하는 파일을 수동으로 이동하십시오 ~해야 한다 갔다.
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