为什么git将我的目录添加为文件?

时间:2010-10-02 07:37:46

标签: git file directory

可能是缺少咖啡,但我刚吃了一些,所以无论如何我会继续问。

以下是我在终端上的文字说明,其中包含换行符以便于阅读。

$ ls -la
total 28
drwxr-xr-x   5 thomas thomas  4096 2010-10-02 09:32 .
drwxr-xr-x 153 thomas thomas 12288 2010-10-02 09:30 ..
drwxr-xr-x   5 thomas thomas  4096 2010-10-02 09:31 content
drwxr-xr-x   3 thomas thomas  4096 2010-10-02 09:31 template
drwxr-xr-x   7 thomas thomas  4096 2010-10-02 09:31 typely

$ git --version
git version 1.7.0.4

$ git init .
Initialized empty Git repository in /home/thomas/typely/.git/

$ git add -A

$ git st
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   content
#   new file:   template
#   new file:   typely
#
# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   content
#   modified:   typely
#

但这些都是目录!此外,自我添加它们以来,它们没有被修改过。

认为目录可能有问题,我尝试cp -r到一个新目录,但同样的事情发生了。如果直接git add这些文件,git不会抱怨,但它们也不会出现在git st中。

我是否会失去理智?

2 个答案:

答案 0 :(得分:2)

找到它。这些目录都包含单独的git存储库!

$ find -name .git
./content/.git
./template/.git
./typely/.git

我在这里留下这个问题以防其他人遇到这个问题。

答案 1 :(得分:2)

它们被视为submodules,Git将其存储在超级存储库中作为一种特殊的文本文件。修改它们时执行git diff会将它们显示为包含文本Subproject commit和提交SHA1 ID的文件。