是否可以将具有.git文件夹的子文件夹添加到repo,而不将Git视为子模块?我已经尝试了不同的方法来忽略.git文件夹,但是迄今为止没有任何方法可行.
我在/.gitignore尝试过:
/vendor/**/.git/
Run Code Online (Sandbox Code Playgroud)
..and in /vendor/.gitignore:
.git/
Run Code Online (Sandbox Code Playgroud)
我想忽略的.git文件夹位于/ vendor/foo/bar /中.
我正在开发一个嵌入式项目,该项目将 Linux 源代码树作为子模块。我目前在非开发机器上工作,所以我永远不会使用这个存储库进行构建;仅供参考。
有一次我初始化了 linux 子模块(带来了大约 2.5GB 的数据),但现在我想反转这个过程,在这个存储库中保留未初始化的 linux 子模块。明确地说,就 Git 而言,我不想检查对子模块的任何更改;我只想要我的磁盘空间。
我怎样才能做到这一点?我可以删除./linux和.git/modules/linux目录以摆脱所有不需要的数据,但我怀疑这会让 git 理所当然地感到困惑和烦恼。
我正在尝试将git子模块添加到我的项目中,特别是ShareKit.我的项目是一个git repo,当我尝试输入时
git submodule add git://github.com/ShareKit/ShareKit.git Submodules/ShareKit
Run Code Online (Sandbox Code Playgroud)
进入终端我得到一个错误,说子模块已经存在.我想我刚刚在这个项目中添加了它,并最终没有使用它并且不正确地从项目目录中删除它(最有可能删除子模块文件夹).所以我尝试着做
git rm --cached Submodules/ShareKit
Run Code Online (Sandbox Code Playgroud)
根据如何删除子模块?,现在当我尝试使用第一段代码再次添加子模块时,我得到了这个:
A git directory for 'Submodules/ShareKit' is found locally with remote(s):
origin git://github.com/ShareKit/ShareKit.git
If you want to reuse this local git directory instead of cloning again from
git://github.com/ShareKit/ShareKit.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.
Run Code Online (Sandbox Code Playgroud)
而且我不确定该怎么做.我对git很新,我需要在我的项目中得到这个 - 有没有办法只是擦除项目中的所有git并从头开始?我只是用一个新项目做到这一点,但除此之外它已经非常完整,从头开始并将所有内容复制完毕将非常耗时.我让ShareKit在测试应用程序中工作,安装正确,有什么理由我不能将该文件夹中的所有ShareKit文件复制到我需要的文件夹中吗?
编辑:我试过了
git submodule deinit Submodules/ShareKit
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
error: …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个git deploy设置,其中我准备好在登台服务器上的git仓库时推送我的更改,然后使用post-recieve hook将各个分支的代码部署到适当的web根目录.
然而,我遇到的一个问题是每次运行时: git submodule update
我收到密码提示,导致部署脚本冻结.
到目前为止,我尝试过的事情是:
需要注意的一件事是在我的登台服务器上设置repo时,由于防火墙的限制,我无法从我的工作实例中克隆repo,因此我在本地克隆了一个副本,然后将新克隆的版本移动到服务器,我已经能够很好地推动它.
寻找我能得到的任何建议或提示.
我们的团队不再使用子模块很长一段时间了,我们想通过删除所有缓存的子模块来释放一些存储库空间.
我们只需要删除以下内容吗?
rm -rf .git/modules
Run Code Online (Sandbox Code Playgroud)
或者有更推荐的方法吗?此外,如果可能,我们希望将删除推送到服务器.
注意:使用git 2.5.4和当前状态将所有内容合并到一个分支中.
注意:我们不记得旧提交中使用的子模块的个别名称.
我的本地计算机上有三个分支:
没有子模块的分支曾经有一个子模块,我按照此 SO post中的说明删除了该子模块。我不想从master和中删除子模块feature-branch-with-submodule。
然而,现在我已经完成了feature-branch-without-submodule,我想切换到feature-branch-with-submodule。所以我执行git checkout,但收到错误:
fatal: not a git repository: src/vendor/mysubmodule/../../../../../.git/modules/src/vendor/mysubmodule
Run Code Online (Sandbox Code Playgroud)
如何修复它,以便带有子模块的分支有它,而没有子模块的分支没有,并且我可以使用 git checkout 自由地来回切换?
好的,我们有一个包含 3 个子模块的存储库。现在我们想将此子模块合并回主存储库,保留所有历史记录(好吧,使用子模块比有用更令人头疼)。我们该如何进行?
我试图在我的 repo 中找到以下 gitlab 条目的描述(在文件视图中):

我相信此文件已损坏,因为我在树中“嵌套”了 git 存储库,或者更好,不止一个 .git 文件(如果这有意义的话)。
但老实说,我什至不知道该用谷歌搜索什么 :P 然后我快速浏览了 stackoverflow 上的回复,但我也没有看到。有人可以告诉我在哪里可以找到这些描述或告诉我这意味着什么吗?我不确定删除它是否会导致 repo 的其余部分损坏或其他一些连锁反应。GitLab 版本是 6.2.4。
提前致谢,
迈克尔