代码之家  ›  专栏  ›  技术社区  ›  Pushpendre

如何将现有的、未存储的、未提交的子目录设置为子模块?

  •  1
  • Pushpendre  · 技术社区  · 10 年前

    有时,我从github克隆第三方项目作为项目的子目录,而不是 git submodule add <repourl> ,但在做了一些工作之后,我意识到我想让它成为一个子模块。

    如何在不丢失更改的情况下将从未提交的现有子目录标记为子模块?

    1 回复  |  直到 10 年前
        1
  •  1
  •   VonC    10 年前

    最简单的方法是:

    • 移动当前子存储库文件夹(重命名)
    • 添加子模块:

      git submodule add -- /url/repo
      
    • 将更改添加回:

      cd repo
      git checkout abranch
      git --work-tree=../repo.renamed add .
      git commit -m "add work"
      git push -u origin abranch
      
    • 不要忘记记录该回购的新SHA1:

      cd ..
      git add repo (# no trailing slash)
      git commit -m "record new sha1 for repo"
      git push