두 개의 분기에서 코드를 'git merge'명령과 결합하려고하지만이 과정에서 git이 충돌합니다. 이러한 분기를 병합하는 다른 방법을 찾아야합니다. git segfaults on merge - submodule conflict
내가 실행 디버그 수준으로 병합 출력을 증가 시키려면 :$ export GIT_MERGE_VERBOSITY=5
내가 대상 지점에 현재입니다. git-status는 모든 것을 깨끗하고 분명하게 보여줍니다. 브랜치를 병합 할 때 이것이 내가 본 것입니다 (비즈니스 인이 민감 할 수 있으므로 체크 인 주석을 %%%%%% 및 filenames를 #######로 바꿨습니다).
$ git merge origin/PH-RELEASE-146.0
Merging HEAD with origin/PH-RELEASE-146.0
Merging:
8399d82 %%%%%%
4f9dcfe %%%%%%
found 2 common ancestor(s):
e0a5fa1 %%%%%%
ce62bf1 %%%%%%
Merging:
e0a5fa1 %%%%%%
ce62bf1 %%%%%%
found 1 common ancestor(s):
af34a07 %%%%%%
Skipped ######## (merged same as existing)
Removed ########
Removed ########
...
Removed ########
Auto-merged build
CONFLICT (submodule): Merge conflict in build - needs b3efae4855bc5eb83aa3167ce6c309a4503c3286
There are unmerged index entries:
1 build
2 build
3 build
Merge with strategy recursive failed.
이 시점에서 git-merge가 중단 된 것으로 나타났습니다. 어떻게 알 수 있습니까? - Cygwin에서에서 자식을 실행하는 경우 : 'ulimit를 -c 무제한'와
$ git merge origin/PH-RELEASE-146.0
11 [main] git 4352 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)
Segmentation fault (core dumped)
- 리눅스에서 자식을 실행 : 두 경우 모두
$ ulimit -c unlimited; ls -l core; git merge origin/PH-RELEASE-146.0; ls -l core ls: cannot access core: No such file or directory Merging HEAD with origin/PH-RELEASE-146.0 ... ... Merge with strategy recursive failed. -rw------- 1 user group 1589248 Jul 29 12:48 core
, .git/index.lock은 남아 있으므로 git 명령이 다시 작동하려면 수동으로 삭제해야합니다.
$ git status 치명적인 '.git/index.lock'을 만들 수 없습니다 : 파일 내가 수동으로 위의 gitk이 트리에서 사람과 커밋 ID를 비교하여 병합을 통해 걸어 봤어요
존재한다. git이 공통 조상을 찾고 병합을 조각으로 분해하여 각 조상을 재귀 적으로 처리한다는 것은 분명합니다. 8dc84b6 될 것을 의미한다 e0a5fa1 서브 모듈 빌드에서
- : 그러나 나는 문제가 발생했습니다 생각하는 것은 "구축"이라는 서브 모듈에 "자식 링크는"커밋 e0a5fa1 및 ce62bf1 사이에 변경된 것입니다 ce62bf1 서브 모듈 빌드
- 은
그래서 분명히 충돌이있을 b3efae4 수하기위한 것입니다. 그러나 "부분적인"병합이나 그것이 불려지 던 부분과 마지막 부분이 아닌 충돌이 있습니다. 그리고 자식은 전혀 잘 처리하지 않는 것 같습니다.
좋아요, 아마도 버그가 있습니다. 버그 리포트를 제출하는 방법은 무엇입니까?
하지만 여기서 내가 정말로 염려하는 것은이 두 가지를 병합 할 수 없다는 사실입니다. '병합'명령을 사용하지 않고이 지점을 함께 가져올 다른 방법을 아는 사람이 있습니까? 전체 병합 프로세스 동안이 서브 모듈을 완전히 무시하는 'git-merge'를 얻을 수 있습니까? 즉 윌리엄의 생각을하려고 도움이되지 않는 경우
리눅스 자식 버전 리눅스에서 1.6.0.4
Cygwin에서 자식 버전 1.6.1.2
병합하기 전에 각 분기에서 하위 모듈을 삭제 한 다음 병합 후에 하위 모듈을 추가 할 수 있습니다. –
나는 그것을 시도했지만 불행히도 작동하지 않는다. 왜냐하면 자식은 존재하고 삭제 될 수없는 보조 조상에게 커밋 히스토리를 거쳐 가기 때문이다. 나는 한쪽 브랜치에서 다른 쪽 브랜치로 커밋을 선택하고 서브 모듈을 업데이트 한 커밋을 의도적으로 건너 뛴다. – meowsqueak
다행히도 우리의 하위 모듈은 커밋의 다른 변경없이 항상 업데이트됩니다! 이 작업을 마치면 "git merge -s resolve origin/PH-RELEASE-146.0"을 사용하여 두 개의 분기를 결합 할 수있었습니다 (병합 커밋의 유일한 차이점은 누락 된 하위 모듈이었습니다). 그리고 나서 하위 모듈을 추가합니다 다시 입력하십시오. – meowsqueak