最佳答案
症状
检查本地是否有 .git/
该文件夹下的子文件夹。
原因
这意味着文件夹(本地)是 嵌套的 Git 存储库 ,其树 SHA1 被记录为“gitlink”(带有白色直箭头的灰色文件夹)
然后你会在 GitHub 上看到 gitlink :对象的 SHA-1 是指另一个存储库中的提交,由空文件夹名称表示。它是一个嵌套的 Git 存储库。
如果您看到 folder @ xxx
, 那么它是一个 submodule entry ,这意味着您自己的存储库有一个 .gitmodules
在其中,除了 gitlink 之外,它还记录了远程存储库的实际 URL。
它表示 super 项目期望嵌套子模块的工作目录所在的提交的对象名称。
在这两种情况下(带有文件夹名称的白色箭头,或带有 folder @ xxx
、文件夹名称和版本的白色箭头),它是一个表示嵌套 Git 存储库的 Gitlink:另一个 Git 存储库的占位符,因此是一个空文件夹。但在第二种情况下,该空文件夹将在特殊的 .gitmodules
中被引用/可见。文件。
解决方案(去除白色箭头)
为了恢复该文件夹内容:
子模块:
一个 git clone --recurse-submodules
将在您的本地存储库中恢复该子模块的内容(与嵌套的 Git 存储库相反,其中不记录其 URL,并且文件夹的内容将保持为空)
白色箭头将保留在远程存储库上,folder @ version
显示您的项目引用的子模块存储库的 SHA1。
嵌套的 Git 存储库:
或者,如果您不关心该文件夹的历史记录,您可以在本地删除它的 .git
子文件夹(假设它不是子模块,这意味着它没有在主存储库的 .gitmodules
文件中引用),添加、提交和推送。
然后白色箭头将消失,您将能够访问 GitHub 上的该文件夹内容。
关于GitHub 文件夹上有一个白色箭头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62056294/