Git没有看到新文件,只看到文件夹

时间:2013-01-17 15:12:03

标签: git file commit

将包含一些新文件的文件夹添加到我的项目中并执行git状态时,git只会告诉我文件夹而不是文件。当我添加-A时,只添加了文件夹,没有添加文件,当我推拉时,只有文件夹而不是文件通过。

我做错了什么?

5 个答案:

答案 0 :(得分:6)

假设您有以下未跟踪的文件夹:

./fruits/
./fruits/apples.txt
./fruits/kiwis.txt

如果要查看未跟踪文件夹中的文件:

git status -u

如果要将未跟踪的文件夹与其中的文件一起暂存:

git add fruits/

答案 1 :(得分:2)

由于git只跟踪文件而不是文件夹,因此推送和拉取的行为是不可能的。向git添加一个空目录是不可能的 对于git status但是这是预期的行为,因为该文件夹中的所有文件都是新的,因为git还没有跟踪该文件夹中的任何文件。

另外,请检查git school, challenge 7。如果您在那里键入git status,您会看到此输出,但octofamily包含两个文件:

$ git statu­s
# On branch master
# Untracked files:
#   (use "­git add <file>..." to­ include i­n what wil­l be commi­tted)
#
# blue_octocat.txt
# octofamily/
# red_octocat.txt

这只是UI的一个简化,你仍然可以git add octofamily/baby_octocat.txt(但是,不是在git学校,因为它不是一个真正的git客户端)。

后续git status现在会反映出这一点:

$ git statu­s
# On branch master
# Changes to be committed:
#      new file: octofamily/baby_octocat.txt
#         
# Untracked files:
#   (use "­git add <file>..." to­ include i­n what wil­l be commi­tted)
#
# blue_octocat.txt
# octofamily/momma_octocat.txt
# red_octocat.txt

请注意,它现在如何显示octofamily内的文件,因为现在该文件夹已知。

答案 2 :(得分:0)

请注意,git现在将包含隐藏.git文件夹的文件夹视为子模块。您可以通过这种方式检查它们,将文件夹内容作为单独的存储库访问,只有存储在父存储库中的引用。

1)你可以保持这种方式,如果你愿意,可以单独使用两个回购,通过参考链接。

2)如果保留文件夹内容的git历史记录并不重要,删除里面的.git文件夹将导致正常的git行为返回。

3)如果您想保留历史记录,可以使用git subtree将分支复制到新的仓库中。这使文件可在本地编辑,并且仍可访问历史记录。

以下命令会将另一个本地repo当前分支的内容和历史记录复制到当前本地分支。

git subtree add --prefix=[newFolderName] [/path/to/other/repo] HEAD

(用您选择的名称和路径替换方括号内的部分)

答案 3 :(得分:0)

尝试git add目录中的一个现有文件。 git status它会像往常一样显示所有文件。这对我有用。

答案 4 :(得分:0)

就我而言,子目录中隐藏了.git目录文件夹。删除它可以为我解决问题。