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

时间:2016-02-15 08:28:23

标签: git git-submodules

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

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

1 个答案:

答案 0 :(得分:1)

最简单的方法是:

  • 移动您当前的subrepo文件夹(重命名)
  • 添加子模块:

    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