GitHub 文件夹上有一个白色箭头

2024-03-28

我最近推送到 github,并在我的一个文件夹上看到一个白色箭头。

当我单击该文件夹时,它不会打开它。在我的本地计算机上,它有内容,但在 github 中我无法访问它们。这是什么意思?


Symptom

检查本地是否有.git/该文件夹下的子文件夹。

Cause

这意味着该文件夹(本地)是嵌套的 Git 存储库,其树 SHA1 被记录为“gitlink”(带有白色直箭头的灰色文件夹)

然后你会在 GitHub 上看到的是gitlink https://git-scm.com/docs/git-fast-import#Documentation/git-fast-import.txt-Inlinedataformat:对象的 SHA-1 引用另一个存储库中的提交,由空文件夹名称表示。它是一个嵌套的 Git 存储库。

如果您看到folder @ xxx,那么它是一个子模块入口 https://git-scm.com/docs/gitsubmodules#_description,这意味着您自己的存储库有一个.gitmodules其中,除了 gitlink 之外,还记录了远程存储库的实际 URL。
它表示超级项目期望嵌套子模块的工作目录所在的提交的对象名称。

在这两种情况下(带有文件夹名称的白色箭头,或带有文件夹名称的白色箭头)folder @ xxx, 文件夹名称and版本),它是一个代表嵌套 Git 存储库的 Gitlink:另一个 Git 存储库的占位符,因此是一个空文件夹。但在第二种情况下,该空文件夹将在特殊的文件夹中被引用/可见.gitmodules file.


解决方案(去掉白色箭头)

为了恢复该文件夹内容:

子模块:

A git clone --recurse-submodules https://git-scm.com/docs/gitsubmodules#_description将恢复本地存储库中该子模块的内容(与嵌套的 Git 存储库相反,其 URL 为not已记录,文件夹内容将保持为空)

白色箭头将保留在远程存储库上,并且folder @ version显示您的项目引用了子模块存储库的 SHA1。

嵌套的 Git 存储库:

或者,如果您不关心该文件夹的历史记录,则可以在本地删除其.git子文件夹(假设是not子模块,这意味着它没有在.gitmodules文件在您的主存储库中),添加,提交和推送。
然后白色箭头就会消失,您将能够在 GitHub 上访问该文件夹内容。

然后你需要删除 gitlink 条目:

git rm --cache client_folder 
# without a trailing slash: 
# not client_folder/ but client_folder

最后,您可以添加、提交和推送该文件夹内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GitHub 文件夹上有一个白色箭头 的相关文章

随机推荐