关于合并的git段错误 - 子模块冲突

时间:2009-07-29 01:00:43

标签: git merge branch git-submodules

我正在尝试使用'git merge'命令将两个分支上的代码组合在一起,但git在此过程中崩溃了。我需要找到一种合并这些分支的替代方法。

为了将合并输出增加到调试级别,我运行了:

    $ 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 unlimited':
    $ 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树中的提交ID进行比较,手动完成了上面的合并。我似乎很清楚git正在寻找共同的祖先并将合并分解成碎片,递归地处理每个祖先。但我认为导致问题的是,在提交e0a5fa1和ce62bf1之间,一个名为“build”的子模块的“git-link”发生了变化:

  • 在e0a5fa1中,子模块构建是8dc84b6
  • 在ce62bf1中,子模块构建是b3efae4

显然存在冲突。但这是“部分”合并期间的冲突或其所谓的,而不是最后一次。并且git似乎根本不能很好地处理这个问题。

好的,所以可能存在一个错误 - 我将如何提交错误报告?

但我真正关心的是我无法合并这两个分支。有没有人知道在不使用'merge'命令的情况下将这些分支组合在一起的另一种方法?在整个合并过程中,我能否以某种方式完全忽略这个子模块?

Linux git版本1.6.0.4

Cygwin git版本1.6.1.2

1 个答案:

答案 0 :(得分:1)

尝试在linux上升级git,1.6.3.3是最新的,如果这对于威廉的想法没有帮助。