我最近推到了github,在我的一个文件夹上看到了一个白色箭头。
当我点击文件夹时,它不会打开它。在我的本地机器上,它有内容,但在github中,我无法访问它们。这是什么意思?
发布于 2020-05-28 05:26:46
症状
检查本地是否在该文件夹下有一个.git/
子文件夹。
原因
这意味着该文件夹(本地)是一个嵌套的Git存储库,其树SHA1被记录为"gitlink“(带有直白色箭头的灰色文件夹)。
然后您将在GitHub上看到的是,对象的gitlink:SHA-1引用了另一个存储库中的提交,由一个空文件夹名表示。它是一个嵌套的Git存储库。
如果您看到一个folder @ xxx
,那么它就是一个子模块条目,这意味着您自己的存储库中有一个.gitmodules
,除了gitlink之外,它还记录了远程存储库的实际URL。
它表示超级项目期望嵌套子模块的工作目录所在的提交的对象名称。
在这两种情况下(带有文件夹名的白色箭头或带有folder @ xxx
、文件夹名称和版本的白色箭头),它都是一个表示嵌套Git存储库的Gitlink :另一个Git存储库的占位符,因此是一个空文件夹。但在第二种情况下,该空文件夹将在一个特殊的.gitmodules
文件中引用/可见。
解决方案(移除白色箭头)
为了还原该文件夹内容:
子模块:
git clone --recurse-submodules
将恢复本地存储库中该子模块的内容(而不是嵌套的Git,它的URL未被记录,文件夹的内容将保持为空)
白色箭头将保留在远程存储库上,folder @ version
将显示项目引用的子模块存储库的SHA1。
嵌套Git存储库:
或者,如果您不关心该文件夹的历史记录,可以在本地删除它的.git
子文件夹(假设它不是子模块,这意味着它不在主存储库的.gitmodules
文件中引用)、添加、提交和推送。
白色箭头将消失,您将能够访问GitHub上的文件夹内容。
然后需要删除gitlink条目:
git rm --cache client_folder
# without a trailing slash:
# not client_folder/ but client_folder
最后,您可以添加、提交和推送该文件夹内容。
发布于 2020-07-24 07:00:25
箭头可能意味着这是一个子模块。
你可以试试:
git add yourfolder
如果这样做会导致错误,如:
xxx submodule xxx
出现时,您可以尝试如下:
git rm --cached yourfolder
然后,您可以成功地运行:
git add yourfolder
发布于 2020-07-15 08:53:51
在您的计算机上,如果您使用箭头导航到目录并试图查看隐藏的文件,您将看到一个.git
文件夹,表明它是一个存储库。这意味着它是包含在外部回购中的回购,您已经将其推到了GitHub中。
删除箭头并开始正确查看文件(在我看来)的最简单方法是删除.git
文件夹。这样,它就不再成为一个git,并再次成为一个常规文件夹。
现在,当您推入GitHub时,您通常可以访问该文件夹并查看其所有内容。
https://stackoverflow.com/questions/62056294
复制相似问题