Git忽略没有`.gitignore`的文件夹甚至是现有的

时间:2015-12-16 04:27:25

标签: git smartgit

我使用的存储库中没有.gitignore,我的主目录中也没有。{/ p>

我这里没有使用git进行编程。相反,我想弄清楚将它用于其他东西是否是一个好主意。不幸的是,我遇到了一个我刚才发现的问题,因为我检查了一个空分支但在我的仓库中找到了文件/文件夹($repo/.git除外)。

现在,git遇到麻烦的文件位于一个非常可怕的目录中。它是HTML表示法中的$repo/Google%20Photos/Hangout_%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 75 62 65 72 66 72 61 6E 6B 65 6E 20 ED A0 BD ED B0 B8(省略$repo/)并且在每个文本编码中都可能无效。请注意,那里没有2F也没有00,文件名长度远远超过255且大于0,所以我肯定在ext4的规范内运行。

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

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

1 个答案:

答案 0 :(得分:0)

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

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)

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