将包含一些新文件的文件夹添加到我的项目中并执行git状态时,git只会告诉我文件夹而不是文件。当我添加-A时,只添加了文件夹,没有添加文件,当我推拉时,只有文件夹而不是文件通过。
我做错了什么?
答案 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 status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# blue_octocat.txt
# octofamily/
# red_octocat.txt
这只是UI的一个简化,你仍然可以git add octofamily/baby_octocat.txt
(但是,不是在git学校,因为它不是一个真正的git客户端)。
后续git status
现在会反映出这一点:
$ git status
# On branch master
# Changes to be committed:
# new file: octofamily/baby_octocat.txt
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# 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目录文件夹。删除它可以为我解决问题。