个人git repo和.gitignore文件

安德鲁·肖特

我正在使用gitlab实例将数据同步到多台计算机,包括我的主目录(减去了诸如ssl键之类的一些东西)。我想看看如何正确处理的一件事是如何忽略〜/ workspace /文件夹等中的回购上的git repo数据。Git可以提交它们,因为它正确地指出我无法同步另一个仓库。

目前,我正在编写此脚本,因为我还没有搞定.gitignore参数,或者它不受支持。除了rm -rf path/to/problem/.git/我为我提供的每个git repo之外,还有谁有更好的主意我有很多人,这让我很累,但是如果这是最好的选择,那就好。我已经将所有这些脚本与脚本一起写了出来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
Ortomala Lokni

解决问题的一种方法是使用子模块

在主存储库内的每个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工具-子模块

另一种可能的解决方案是使用git子树。阅读Git子树:Git子模块的替代品

==编辑==

根据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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档