Git忽略没有“.gitignore”甚至不存在的文件夹

Git忽略没有“.gitignore”甚至不存在的文件夹,git,smartgit,Git,Smartgit,在我使用的存储库中没有.gitignore,在我的主目录中也没有 我不是在用git编程。相反,我想弄清楚将其用于其他用途是否是个好主意。不幸的是,我遇到了一个问题,我之所以发现这个问题,是因为我签出了一个空分支,但在我的repo中发现了文件/文件夹(而不是$repo/.git) 现在,git遇到问题的文件位于一个非常糟糕的命名目录中。它是HTML符号的$repo/Google%20Photos/Hangout\u%20Tauberfranken%20%ED%A0%BD%ED%B0%B8和47 6

在我使用的存储库中没有
.gitignore
,在我的主目录中也没有

我不是在用git编程。相反,我想弄清楚将其用于其他用途是否是个好主意。不幸的是,我遇到了一个问题,我之所以发现这个问题,是因为我签出了一个空分支,但在我的repo中发现了文件/文件夹(而不是
$repo/.git

现在,git遇到问题的文件位于一个非常糟糕的命名目录中。它是HTML符号的
$repo/Google%20Photos/Hangout\u%20Tauberfranken%20%ED%A0%BD%ED%B0%B8
47 6F 6F 67 6C 65 20 50 68 6F 74 6F 73 2F 48 61 6E 67 6F 75 74 5F 20 54 61 62 65 72 72 61 6E 6E 65 6E 20 ED A0 BD ED B0 B0 B0 B8
(省略
$repo//code>)而且可能在任何文本编码中都是无效的。请注意,这里没有
2F
也没有
00
,文件名长度远离255且大于0,因此我肯定在ext4的规范范围内操作

然而,这对git来说应该不是问题,对ext4来说当然也不是问题。我正在使用SmartGit,甚至没有收到错误消息。其中的文件将被忽略


为什么会发生这种情况?我应该避免哪些角色,这样就不会再发生这种情况了?(是的,我知道它们可能至少应该是有效的UTF-8,但可能有更多的限制。)

该目录中可能没有文件-请仔细检查一下好吗?Git跟踪的是内容而不是目录。如果没有要跟踪的文件,git状态将不会显示任何更改

cd ~
mkdir repo
cd repo
mkdir -p Google%20Photos/Hangout_%20Tauberfranken%20%ED%A0%BD%ED%B0%B8

git init
Initialized empty Git repository in

git status
On branch master
Initial commit
nothing to commit (create/copy files and use "git add" to track)
请注意,即使我们有一个用HTML编码创建的目录,git也只是沿着它的快乐之路前进,忽略了那些曾经存在的目录。它正在寻找要跟踪的内容(例如,文件中的文本、文件中的二进制数据等)。由于没有可跟踪的文件/内容,git选择忽略目录的存在

cd Google%20Photos/Hangout_%20Tauberfranken%20%ED%A0%BD%ED%B0%B8/
vim test.txt
(wrote something in test.txt and saved it)

cd ~/repo

git status
On branch master
Initial commit
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        Google%20Photos/
nothing added to commit but untracked files present (use "git add" to track)
cd谷歌%20照片/闲逛区\u%20Tauberfranken%20%ED%A0%BD%ED%B0%B8/
vim test.txt
(在test.txt中编写了一些内容并保存了它)
cd~/回购
git状态
论分行行长
初始提交
未跟踪的文件:
(使用“git add…”包含在将提交的内容中)
谷歌%20张照片/
提交时未添加任何内容,但存在未跟踪的文件(使用“git add”跟踪)

现在我们添加了内容,git正在识别它并提示我们未跟踪的文件。

它与命令行客户端一起工作吗?当我重新阅读您的问题时,您的文件似乎位于名称可怕的目录中。你能把
cd
放进那个目录并显示
ls-l
的部分输出吗?当您在该目录中时,是否可以执行
git status
并从命令行添加输出?@RyanO'Hara谢谢!如果我在命令行上使用git,我可以暂存并提交此文件夹中的文件。但在我随后发布SmartGit之后,事情变得更加奇怪。现在SmartGit向我展示了这些文件(过去它对这些文件一无所知)据称丢失了。它们肯定在文件系统中,git给了我一个很好的“无需提交,工作目录干净”。repo是否在一个特殊的位置(如Windows\System32?)或程序文件中?@M.M如果我是Windows用户,我可以使用这样的文件名吗?;-)(或者说ext4)我认为问题不在于git。git可能工作得很好,问题是SmartGit。我的猜测是,它修改了从git repo或FS读取的字符串,然后在下次查找时找不到这些文件,因此它不会将它们列为未跟踪,也不会在提交所有内容时添加它们。这也解释了为什么在我使用git在控制台上添加它们之后,它会将它们列为缺失。