2013-02-28 4 views
11

git에 대한 프로세스는 주기적으로 마스터 분기로 병합되므로 변경 내용을 최신 기능 분기로 병합 할 수 있습니다. 한 지점에서 다른 지점으로 병합되는 최신 라운드가 있기 때문에 우리는 해결책이 명확하지 않은 문제에 직면 해 있습니다.병합 기반 오류를 따르지 않는 이유는 무엇입니까?

우리는 그 안에 19 개의 서브 모듈이있는 저장소를 가지고 있습니다. 모든 서브 모듈의 병합을 수행 할 때 우리는 수정 된 파일, 충돌 등을 알려주는 예상 출력을 봅니다. 그런 다음 "루트"저장소의 병합에 도달하면 모든 것이 남쪽으로 가고 일부는 (문제를 지적하기 위해 편집 됨).

warning: Failed to merge submodule projects/foo1 (commits don't follow merge-base) 
warning: Failed to merge submodule projects/foo2 (commits don't follow merge-base) 
warning: Failed to merge submodule projects/foo3 (not fast-forward) 

Found a possible merge resolution for the submodule: 
931a61165f3b2079523a122477fa5f44c123406d: Comment of last merge 

If this is correct simply add it to the index for example by using: 

git update-index --cacheinfo 160000 931a61165f3b2079523a122477fa5f44c123406d "projects/foo3" 

which will accept this suggestion. 

이제 git update-index 명령을 실행할 수 있습니다. 그 하나의 서브 모듈에 대해 자식을 행복하게 만들지 만, 우리는 전에 이것을 실행할 필요가 없습니다. 도움말이 표시되지 않는 foo1 및 foo2 서브 모듈을 볼 때 문제가 실제로 발생합니다. 자신의 질문 아래의 경우 영업 이익의 의견에

+0

하위 모듈을 수정할 때마다 부모 레포를 커밋하고 푸시 했습니까? – VonC

+0

병합하기 전에 두 트리는 서브 모듈에서 누락 된 커밋의 문제없이 완벽하게 작동합니다. 이게 네가 말하는거야? – Peter

+0

하위 모듈을 수정할 때 하위 모듈의 SHA1이 변경되었으므로 하위 모듈을 수정할 때 반드시 커밋하고 밀어 넣기, 부모로 이동, 커밋 및 푸시해야합니다. 난 당신이 부모 repo를 병합하기 전에, 그 서브 모듈 (그리고 만약 당신이 커밋 - 푸시 시퀀스를 수행 한 경우)에 대한 수정을했는지 궁금 해서요. – VonC

답변

0

가 사라 :이 게시물에 대한 그 브라우징

, 무슨 일이 있었는지 100 % 확신하면서, 나는 그것을 수동으로 GIT_MERGE을 제거 사용자 때문 믿는다 파일을 루트 저장소에서 가져 와서 푸시합니다. 수동으로 각 서브 모듈을 병합

git commit -i -m "blah" . 

했던 실행 루트 서브 모듈에 다음 변경을 밀고함으로써 우리는 문제를 해결하기 위해 나타납니다. 힘내라는 것은 우리가 뿌리 하위 모듈을 저지해야한다고 주장하지는 않았지만 우리가해야 할 필요가있는 것처럼 보입니다. 후속 병합은 지금까지 제대로 작동하는 것으로 보입니다.

관련 문제