我正在使用gitlab实例将数据同步到多台计算机,包括我的主目录(减去了诸如ssl键之类的一些东西)。我想看看如何正确处理的一件事是如何忽略〜/ workspace /文件夹等中的回购上的git repo数据。 Git可以提交它们,因为它正确地指出我无法同步另一个仓库。
当前,我正在编写此脚本,因为我还没有搞定.gitignore参数,或者它不受支持。除了我为下拉的每个git repo rm -rf path/to/problem/.git/
之外,还有人有更好的主意吗?我有很多人,而且这很累,但是如果这是最好的选择,那就好。我已将所有这些脚本与git add . && git commit -m ....... && git push
一起编写。
我能够快速复制错误,尽管我并不在意这个文件夹,但仍然是一个示例。我只是为我的wow插件创建了一个仓库,更新了它们并且没有使用我的脚本。错误如下:
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> EasyDisenchant
hint:
hint: If you added this path by mistake, you can remove it from the
hint: index with:
hint:
hint: git rm --cached EasyDisenchant
hint:
hint: See "git help submodule" for more information.
主gitignore中的代码行是:
# Ignore git repo data folders
.git
**/.git
答案 0 :(得分:1)
解决问题的一种方法是使用submodules。
在主存储库中的每个git存储库上,您可以执行以下操作:
cd /path/to/module1
git submodule add ssh://path.to.repo/module1
git commit -m "Added submodule module1"
您将在主存储库级别拥有一个引用所有子模块的新.gitmodules
文件。每个子模块将独立存储在其自己的存储库中,还需要独立地推送它们。主存储库中的引用也需要推送。
要克隆主存储库的所有子模块,您将必须执行以下操作:
git submodule update --init
阅读7.11 Git Tools - Submodules了解详情。
另一种可能的解决方案是使用git子树。阅读Git subtree: the alternative to Git submodule
==编辑==
根据OP(Andrew Schott),Git子树最适合这种情况。
要添加子树:
git subtree add --prefix path/to/new/subtree url.git master --squash
要更新子树:
git subtree pull --prefix path/to/subtrree url.git master --squash