子模块合并失败 - “未检出”警告

时间:2012-01-12 18:45:13

标签: git

如果在发出以下警告后如何合并此子模块?

warning: Failed to merge submodule sites/all/modules/contrib/panelizer 
                (not checked out)

1 个答案:

答案 0 :(得分:1)

该错误消息来自submodule.c,特别是merge_submodule() method

int merge_submodule(unsigned char result[20], const char *path,
                    const unsigned char base[20], const unsigned char a[20],
                    const unsigned char b[20], int search)
{
  struct commit *commit_base, *commit_a, *commit_b;
  int parent_count;
  struct object_array merges;

  // [...]

  if (add_submodule_odb(path)) {
    MERGE_WARNING(path, "not checked out");
    return 0;
  }

add_submodule_odb() method正在检查所述子模块中.git的存在。

所以,正如Jefromi评论的那样,你可能没有像Pro Git book中所描述的那样git submodule update。 您应该看到SO问题“ Git - easy way pull latest of all submodules ”,详细了解如何取回所有您的子模块的内容。

使用最近的git,您可以pull and update in one go

git alias update_submodules='git pull --recurse-submodules && git submodule update'