GitHub不允许我访问子文件夹

时间:2013-11-11 22:22:21

标签: git zend-framework version-control github git-submodules

GitHub已将我无法访问的回购邮件中的文件夹变灰了。这让我很担心,因为我的代码更改在那些文件夹中!

长:

我正在开发一个ZF2 Web应用程序并使用git进行源代码控制。 ZF2是模块化的,所以某处某处(很可能是使用composer.phar或者可能使用git clone)我已经将一些ZF2模块下载到项目子文件夹中。一个这样的ZF2模块是vendor/coolcsn/csn-user。我在ZF2模块中进行了更改。

问题1:当我运行git status时,我明白了:

$ git status
# On branch master
# Changes not staged for commit:
#       modified:   vendor/coolcsn/csn-user (modified content, untracked content)

当我运行git commit时,它会说“没有更改添加到提交”。我肯定做了一些改变。

然后我发现我可以将目录更改为vendor/coolcsn/csn-user,并在那里执行git status和git commit。然后我可以改回项目的根目录,并在那里进行git提交。然后,一切都很好....直到:

问题2:直到我对GitHub进行git推送。在GitHub上我的整个项目似乎已经到位,但是在GitHub上无法访问vendor/coolcsn/csn-user!它是灰色的。我无法点击它。这让我哭。我不知道为什么,我不知道是什么。我读过一些关于git子模块的东西。我不知道我是否有git子模块或者它们是否是其他东西。我自己没有有意识地建立任何子模块。无论哪种方式,我担心我的GitHub子模块更改没有被跟踪,或者如果它们被跟踪,它们被隐藏,无法查看。

可能的解决方案#1:我认为我可以删除子模块中的.git文件夹(如果它们是子模块),只是直接提交到GitHub,我的csn-user文件夹可能没有变灰。但在我这样做之前,我听说这是不可取的,我想检查一下发生了什么,以及如何,无论如何,我可以正确使用git和GitHub和子模块,并跟踪我的更改同一时间。

特别是,寻找一套关于如何使用git和GitHub保持我的repo可访问和可提交的步骤,说明或想法。

2 个答案:

答案 0 :(得分:3)

您似乎正在使用存储库中的子模块。运行git submodule status以查看正在使用的子模块。

“问题1”,您对提交的困惑,是由于提交对根存储库的更改与子模块的存储库之间的区别。听起来您正在提交到子模块存储库,然后更新根存储库以将其子模块指向该新提交。如果你没有发布这些提交,这可能会有问题,因为没有其他人能够找到它们然后检查根存储库并想要获取它所依赖的子模块。

Github正确地没有显示这些目录的内容,因为它们是对其他存储库中特定提交的引用,而不是根存储库本身的一部分。

虽然您可以将所有这些文件检查到您的根存储库中,这听起来很危险。通过这样做,您可以销毁有关这些子文件夹的内容来自何处的信息。没有其他人(包括您将来)能够轻松识别内容的来源或从这些存储库中获取的修订版本。

答案 1 :(得分:0)

如果您确实有子模块,并且正在运行git子模块状态以进行检查,请确保:

  • 从本地Git存储库的子文件夹运行命令
  • 或使用Git 2.25(2020年第一季度)

这是因为,在Git 2.25(2020年第一季度)之前,从超级项目的子目录运行的“ git submodule status”无法正常工作。该问题已得到纠正。

请参见commit 1f3aea2Manish Goregaokar (Manishearth)(2019年11月25日)。
(由Junio C Hamano -- gitster --commit 88cf809中合并,2019年12月5日)

  

submodule:修复了从子目录中调用时的“子模块状态”

     

签名人:Manish Goregaokar

     

在子目录中调用[ git子模块](https://git-scm.com/docs/git-submodule) status时,我们错误地未检测到修改后的子模块,因此报告所有子模块均未更改。

     

这是因为子模块帮助程序正在使用子模块路径调用diff-index,并假设该路径是相对于当前前缀目录的,但是所使用的子模块路径实际上是相对于根的。

     

在子模块上运行差异文件时,始终将NULL作为prefix传递,以确保子模块的路径被解释为相对于超级项目的存储库根目录。

相关问题