【问题标题】:Git inside git: disconnect inner git, keep filesGit inside git:断开内部git,保留文件
【发布时间】:2014-02-24 10:38:26
【问题描述】:

总结

Git 里面的 Git。删除了内部.gits,保留了文件。推。克隆。文件夹存在,但为空。

我想要做什么

所以我正在尝试将现有的 repo 上传到我自己的 git 服务器。回购中有一些回购(不是原始回购的一部分)。我不需要连接这些,最重要的是稳定性 - 克隆必须生成 PHP 服务器文件的工作副本。

我是如何尝试的

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

问题

还有其他方法可以从文件夹中删除 git 功能吗?是什么让文件夹不再是普通文件?我完全没有想法。

其他信息

.gitignore.git/ifno/exclude 请勿触摸这些目录。

【问题讨论】:

  • 您是否将文件“git add”和“git commit”到外部仓库?
  • @PeterWestlake 没有。因为我没有添加或更改任何文件,所以我没有任何要提交的内容。 .git 文件夹无论如何都不会被跟踪,因此无法提交。
  • 你仍然需要告诉外部仓库文件。详情见我的回答。

标签: git version-control subrepos


【解决方案1】:

终于找到了answer

git rm --cached path/to/submodule(最后没有/*

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

清除缓存后,您仍需要按照 Peter 的建议将文件添加到外部存储库。

【讨论】:

    【解决方案2】:

    git 存储库包含 .git 文件夹中文件的所有信息,因此当您删除它时,您会删除有关内部存储库文件的所有信息。文件本身没有改变,但外部仓库不知道它们,因为它从来没有改变过。知道它们的是内部仓库,现在已经不存在了。你需要git addgit commit他们。

    【讨论】:

    • 这是不正确的。因为没有什么要补充的。我有原始回购(带有内部回购),我可以复制并尝试多次。当我从内部删除 .git 文件夹时,git status 看不到这些文件。因此,没有什么可添加的。
    • 手动添加git add path/to/folder也不会添加任何要提交的内容。
    • 但 git 确实将它存储在某个地方 - 如果我重命名文件夹;犯罪;并重新命名 - 现在它注册了一个删除,但不是一个添加。就 git 而言,该目录好像完全丢失了。
    • 所以这被证明是一个有效的观点,但真正的问题是,该目录被缓存了 - 请参阅我自己的答案。
    猜你喜欢
    • 2018-11-23
    • 2011-03-13
    • 2022-01-26
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2010-12-07
    • 2013-03-31
    相关资源
    最近更新 更多