首页 > 解决方案 > 有没有办法将子模块添加到非空目录

问题描述

我正在尝试将一个通用文档(几乎所有我的产品都使用)添加到包含我的项目所需的其他文档的文件夹中。当我使用 git submodule add 时,我得到目录不为空的错误,这就是重点。如果我以任何其他方式添加它,它会创建一个新的子目录,它会破坏我到该文件的所有链接。

标签: gitgit-submodules

解决方案


如果我理解正确,您的项目 X 的​​结构如下:

- /
  +- docs/
     +- projectdoc1.txt
     +- projectdoc2.txt

.. 然后您在另一个 git 存储库中有一个公共项目,其中包含(至少)一个您想要集成到项目 X 的​​文档?

(另外我假设你有一个用于执行命令的 bash shell。)

假设这一点,您也许可以使用符号链接来解决您的问题?

首先,在根目录下添加公共项目作为子模块:

git submodule add my-common-repo.git

现在你有

- /
  +- docs/
  |  +- projectdoc1.txt
  |  +- projectdoc2.txt
  +- my-common-repo/
     +- commondoc.txt

现在,转到 docs 子目录并创建一个指向 commondoc.txt 的链接:

cd docs/
ln -s ../my-common-repo/commondoc.txt

然后你可以像普通文件一样添加链接:

git add commondoc.txt
git commit -m 'Add commondoc.txt symlink from my-common-repo'

而已。现在你有:

- /
  +- docs/
  |  +- projectdoc1.txt
  |  +- projectdoc2.txt
  |  +- commondoc.txt
  +- my-common-repo/
     +- commondoc.txt

每当您更新 my-common-repo/ 子模块时,docs/commondoc.txt 都会保持最新状态。


推荐阅读