Git内部的Git:断开内部的Git,保留文件。

3

摘要

将Git放入Git内部。移除内部.git文件夹,保留文件。推送。克隆。文件夹存在,但为空。

我的目标是什么

我想将一个现有的存储库上传到自己的Git服务器上。该存储库内部有一些其他存储库(不属于原始存储库的一部分)。我不需要这些被连接,最重要的是稳定性——克隆必须产生PHP服务器文件的工作副本。

我的尝试方式

所以我从内部存储库中删除了.git文件夹,并将主存储库推送到空的git服务器中。然后我在新的本地目录中克隆了新创建的远程存储库——曾经拥有.git的文件夹全部为空(这些文件夹本身确实存在)。我还安装了GitLab,在那里,该文件夹与普通文件夹不同,没有找到任何额外信息(请注意文件夹“flashcard”):

enter image description here

问题

是否有其他方法从文件夹中删除Git功能?是什么使该文件夹不能成为普通文件?我已经没有更多的想法了。

其他信息

.gitignore.git/ifno/exclude不影响这些目录。


你是否将文件通过 "git add" 和 "git commit" 添加到外部仓库中了? - Peter Westlake
@PeterWestlake 不需要。因为我没有添加或更改任何文件,所以我没有任何要提交的内容。.git文件夹本来就不被跟踪,所以也不能提交。 - krivar
你仍然需要告诉外部仓库有关这些文件的信息。请参考我的答案了解详情。 - Peter Westlake
2个回答

4

终于找到了这个答案

git rm --cached path/to/submodule(末尾不要加/*)。

我自己没有将这些仓库添加为子模块,但显然它们已经以某种方式被缓存为子模块。

清除缓存后,您仍然需要像Peter建议的那样将文件添加到外部仓库中。


0
一个 Git 仓库包含了 .git 文件夹中所有文件的信息,因此当你删除它时,你就删除了内部仓库文件的所有信息。这些文件本身并没有改变,但外部仓库不知道它们的存在,因为它从未知道过。只有内部仓库知道它们的存在,而现在内部仓库已经不存在了。你需要使用 git addgit commit 命令来添加和提交它们。

这是不正确的。因为没有什么可以添加的。我有原始存储库(带有内部存储库),可以复制并尝试多次。当我从内部删除.git文件夹时,文件不会在git status中变为可见。因此,没有什么可以添加的。 - krivar
同时手动添加 git add path/to/folder 也不会将任何内容添加到待提交的内容中。 - krivar
但是 Git 确实将其存储在某个地方 - 如果我重命名文件夹;提交;然后再改回原来的名字 - 现在它会注册一个删除,但不会注册添加。对于 Git 来说,该目录就好像完全不存在。 - krivar
所以这证明了一个有效的观点,但真正的问题是目录被缓存了 - 请参见我的答案。 - krivar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接