我試圖將兩個分支上的代碼與'git merge'命令組合,但git在此過程中崩潰。我需要找到合併這些分支的另一種方法。混合git segfaults - 子模塊衝突
爲了提高合併輸出到調試級別我跑:
$ export GIT_MERGE_VERBOSITY=5
我目前在目標分支。 git-status顯示一切乾淨清晰。 當我合併分支機構時,這就是我所看到的(我用#######替換了簽入註釋%%%%%%和文件名,因爲它們可能對業務敏感)。
$ 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下運行git時:
$ 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)
- 在Linux下運行git的時候,用 '的ulimit -c無限':
$ 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」:文件已存在
我已經通過手動合併走到上面由提交的ID用在gitk樹上的那些比較。在我看來很清楚git正在尋找共同的祖先,並將合併分解成碎片,遞歸地處理每個祖先。但我認爲已經造成的問題是,「混帳鏈接」到一個名爲「打造」子模塊已提交e0a5fa1和ce62bf1之間切換:在e0a5fa1子模塊構建
- ,就是要8dc84b6 在ce62bf1子模塊構建
- ,就是要b3efae4
所以,很顯然有衝突。但這是在「部分」合併或任何它所謂的衝突,而不是最後一個。而git似乎並沒有處理得很好。
好吧,所以可能有一個錯誤 - 我將如何去提交錯誤報告?
但是我真正關心的是這個事實,我不能合併這兩個分支。是否有人知道另一種方法將這些分支結合在一起而不使用「合併」命令?我可以在整個合併過程中以某種方式忽略此子模塊,從而獲得'git-merge'嗎?
Linux的Git版本1.6.0.4
Cygwin的Git版本1.6.1.2
您可以嘗試在合併之前從每個分支中刪除子模塊,然後在合併之後添加子模塊。 – 2009-07-29 01:20:52
我試過了,但不幸的是它不起作用,因爲git會通過提交歷史返回到子模塊存在且無法刪除的輔助祖先。 我最終通過將提交從一個分支提交到另一個分支來解決這個問題,但是故意跳過任何提交子模塊的提交。 – meowsqueak 2009-07-29 07:21:31