我有一个具有以下文件夹结构的项目:
所有项目文件都在base_fldr文件夹中.另外我在base_fldr中有一些名为sub_fldr1和sub_fldr2的文件夹.这些子文件夹还包含一些文件.
如果我修改base_fldr或base_fldr\sub_fldr \中的任何文件,那么git status会将它们显示为已修改.另外,如果我向base_fldr添加一个新文件,git status会将其显示为未跟踪文件.
我的问题是如果我在base_fldr\sub_fldr \中添加一个新文件,那么git status不会将文件显示为未跟踪.它甚至不会提供有关该文件的任何信息.
该文件或其扩展名不在我的.gitignore列表中.我也尝试了git add sub_fldr\file_name,但既没有给出错误,也没有将文件添加到索引中.
知道这里发生了什么吗?谢谢!
kri*_*ver 23
我弄清楚出了什么问题.基本上我的.gitignore文件中的第一行是"*/".这会导致git status命令忽略添加到子目录的任何文件.但有趣的是,如果我修改子文件夹中的任何文件,git status正确显示它们已修改为文件已存在于git存储库中,但忽略了子文件夹中的新文件.
我修复了我的问题,删除了.gitignore文件中的行,不忽略子文件夹中的更改,然后将新文件添加到索引,然后再次添加回.gitignore中的行,以便它将忽略子文件夹中的任何生成的文件.
谢谢大家的回复.
Hig*_*ife 15
这可能是因为你的base_fldr\sub_fldr \目录未被跟踪,如果你运行:
git add base_fldr\sub_fldr\
Run Code Online (Sandbox Code Playgroud)
从您的工作副本根目录中,它将自动添加该目录中的目录和其他文件和目录.
默认情况下,git不会在未跟踪的目录中显示文件.
mve*_*man 15
我遇到了丢失跟踪文件的类似问题.在尝试管理本地修改版本的跟踪文件而不必经常避免意外提交的方法时,我运行了以下内容:
git update-index --assume-unchanged my-tracked-file-that-is-awol
Run Code Online (Sandbox Code Playgroud)
我最终废弃了这个想法,但忘记撤消命令,因此对此和其他 - 保持未更改的文件的后续更改完全缺失:
git status -u --ignored
Run Code Online (Sandbox Code Playgroud)
我花了一段时间来弄清楚发生了什么,但我只需要用以下方法来反转命令:
git update-index --no-assume-unchanged my-tracked-file-that-is-awol
Run Code Online (Sandbox Code Playgroud)
为了调试这样的问题,请.gitignore
通过观察以下两个输出来查看您的文件是否是罪魁祸首
请参阅https://git-scm.com/docs/git-ls-files
git ls-files --other --directory --exclude-standard
这将显示所有未跟踪的文件,同时遵守.gitignore
文件。
git ls-files --other --directory
这将显示所有未跟踪的文件,而不遵守.gitignore
文件。
由于文件中存在某些标志,无论 的输出中存在2
但不存在于 的输出1
中的.gitignore
文件都不会显示在未跟踪中