我添加了新文件夹(实际上是从另一个仓库克隆的,但忘了),然后在那里做了一些更改。此外,当我尝试执行 git add 时,我在其他地方做了很多更改
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# (commit or discard the untracked or modified content in submodules)
#
# modified: protected/ext/SpecificFolder (modified content)
#
然后我记得可能有一个 .git 文件夹(因为我之前在那里执行过 git clone)。我进入该文件夹并删除了不需要的文件(文件夹)和 .git 文件夹。我检查了 git 状态,没有什么奇怪的。然后提交并签出到另一个分支,突然我发现这个文件夹没有添加到上次提交中。实际上文件夹已添加,但里面的文件被忽略了。现在,即使我尝试git add
对该文件夹执行任何操作,也没有发生任何事情,也git status
没有显示任何更改 :(
我能做些什么 ?
答案1
Git 不跟踪目录;而只是跟踪其中的文件。
听起来你可能有一个忽略模式,导致add
什么都不做。你可以使用 查看被忽略的文件git status --ignored
;然后可以使用 跟踪它们git add --force protected/ext/SpecificFolder
答案2
Git 不会跟踪空目录。如果您的项目包含多层子目录,git 实际上会跟踪包含文件的目录。如果没有,那么它将是一个扁平的文件存储库。
答案3
我碰巧做了与该用户完全相同的事情:在另一个存储库中添加一个现有的 git 存储库。
症状是 git 将该目录识别为文件,因此无法添加该目录的文件。
为了解决这个问题,我删除了.git
文件夹中的文件夹,将该文件夹移动到另一个目录中,清除了索引,删除了我的存储库中的目录,然后我就能够正确添加目录了。
这样做的寓意是:不要在另一个存储库中添加存储库。
答案4
尝试在该目录中添加一个文件。
$ git add my-dir/index.html
如果您看到如下输出:
The following paths are ignored by one of your .gitignore files:
my-dir/index.html
Use -f if you really want to add them.
fatal: no files added
您的某个 gitignore 中有一条规则阻止您添加该目录。