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

vc9ivgsu  于 2023-02-17  发布在  Git
关注(0)|答案(8)|浏览(762)

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

当我点击这个文件夹时,它并没有打开它。在我的本地机器上,它有内容,但是在github中我无法访问它们。这意味着什么?

gz5pxeao

gz5pxeao1#

症状

检查本地该文件夹下是否有.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 repo相反,在嵌套的Git repo中,它的URL not recorded,文件夹的内容将保持为空)
白色箭头将保留在远程存储库上,folder @ version显示项目引用的子模块存储库的SHA1。

嵌套Git存储库:

或者,如果你不关心这个文件夹的历史记录,你可以在本地删除它的.git子文件夹(假设它不是一个子模块,意味着它没有在主仓库的.gitmodules文件中被引用),添加,提交和推送。
然后白色箭头会消失,您就可以在GitHub上访问该文件夹的内容。
然后你需要删除gitlink条目:

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

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

dsekswqp

dsekswqp2#

箭头可能表示是子模块。
您可以尝试:

git add yourfolder

如果这导致类似以下的错误:

xxx submodule xxx

出现,您可以尝试以下操作:

git rm --cached yourfolder

然后,您可以成功运行:

git add yourfolder
szqfcxe2

szqfcxe23#

在你的机器上,如果你导航到箭头所指的目录并试图查看隐藏文件,你会看到一个.git文件夹,这表明它是一个repository,这意味着它是包含在你推送到GitHub的外层repo中的repo。
删除箭头并开始正确查看文件的最简单方法(在我看来)是删除.git文件夹,这样它就不再是git repo,而是一个普通的文件夹。
现在,当您推送到GitHub时,您可以正常访问该文件夹并查看其所有内容。

shstlldc

shstlldc4#

如果你想从git config文件中删除一个子模块,请遵循以下步骤,记住如果你不想删除该子模块的本地目录,请不要执行步骤X:
从.gitmodules文件中删除相关部分。
暂存.gitmodules更改git添加.gitmodules
从.git/config中删除相关部分。
运行git rm --cached path_to_submodule(没有斜杠)。
运行rm -rf .git/modules/子模块路径(不带斜杠)。
提交git commit -m“已删除的子模块“
(风险)步骤X:-删除现在未跟踪的子模块文件rm -rf path_to_submodule

qzwqbdag

qzwqbdag5#

在我的例子中:

git rm --cached portal

ls 

git status

git add --all

...

sshcrbum

sshcrbum6#

对我来说,子文件夹中的更改历史不再重要

首先从子文件夹中删除.git

git rm --cached myfolder

git add myfolder

git commit -m "making myfolder available"

git push
jc3wubiy

jc3wubiy7#

这是由于.git文件在你的一些子文件夹中。如果你找不到它,请按照以下步骤操作...
1.单击***文件***选项Click this image - 1
1.转到***首选项***,然后单击***设置***Click this image - 2
1.查找***文本编辑器***,然后单击***文件***向下滚动选中***排除***中的***.git***
Click this image - 3
1.如果存在***.git***,则删除它。
1.现在你会在你的主文件夹或子文件夹中找到.git文件夹...删除它并将文件夹上传到GitHub。

jgzswidk

jgzswidk8#

这对我有用

1.转到项目文件夹。
1.从导航栏转到**“查看”,转到“显示”并选中“隐藏项目”
1.从项目中删除所有
".git”**文件夹。
1.再次初始化新的或现有的存储库并推送代码。

相关问题