3

在我的项目中添加一个包含一些新文件的文件夹并执行 git status 时,git 只告诉我该文件夹而不是文件。当我添加 -A 时,只添加了文件夹,没有添加任何文件,当我推拉时,只有文件夹而不是文件通过。

我究竟做错了什么?

4

5 回答 5

7

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

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

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

git status -u

如果要暂存未跟踪的文件夹以及其中的文件:

git add fruits/
于 2014-12-02T09:34:31.730 回答
2

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

另外,检查git school,挑战 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,因为现在该文件夹是已知的。

于 2013-01-17T15:17:11.133 回答
2

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

1)您可以保持这种方式,如果您愿意,只需单独使用两个存储库,通过引用链接。

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

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


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

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

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

于 2016-05-12T02:03:42.367 回答
0

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

于 2017-09-14T17:33:59.940 回答
-1

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

于 2020-03-04T17:22:06.597 回答