Lan*_*der 6 version-control git
[注意:这不是通常的“Git 仍然跟踪我刚刚添加到 .gitignore 的文件!” 问题。这与此相反。]
我在 Git 存储库中有一个网站的完整目录结构。我使用的 CMS 默认带有 .gitignore 文件:
# Ignore paths that contain user-generated content.
sites/*/files/
sites/*/private/
Run Code Online (Sandbox Code Playgroud)
请注意,所有 site/*/files 目录均被排除。但按照我处理网站的方式,我希望将一个特定的子文件夹包含在存储库中。因此,在使用上述 .gitignore 启动我的存储库后,我将其修改为:
# Ignore paths that contain user-generated content.
sites/*/files/
!sites/*/files/content/
!sites/*/files/content/*
sites/*/private/
Run Code Online (Sandbox Code Playgroud)
根据我的理解,我上面添加的否定模式应该意味着sites/*/files/content/及其内容包含在存储库中,但sites/*/files的其余部分被忽略。当我记得在第一次提交之前更新我的 .gitignore 文件时,它会按计划工作。
但是,当我忘记更新 .gitignore 直到后来,正如我习惯做的那样,我无法让 Git 添加新文件而不强制它完全忽略 .gitignore 文件。我运行这个:
> git add sites/default/files/content/
Run Code Online (Sandbox Code Playgroud)
并得到这个回来:
The following paths are ignored by one of your .gitignore files:
sites/default/files
Use -f if you really want to add them.
fatal: no files added
Run Code Online (Sandbox Code Playgroud)
为什么是的,Git,该目录在 .gitignore 的第 2 行被忽略,但第 3 行和第 4 行说要对我问你的特定文件夹进行例外处理!
我知道我可以使用 -f 直接添加它,但随后我必须在将来向该目录添加文件的任何提交中一次又一次地执行此操作。
网络上有 很多页面讨论更新 .gitignore 不会使 Git 忽略已跟踪的文件,但我找不到任何讨论它如何不会使 Git 跟踪新排除的文件的内容。
很多地方都说git update-index可以用来解决这样的问题,但我似乎无法让它为我工作。它有大约一百万个可能的标志,所以也许我没有偶然发现正确的一个(或几个的组合)。
TL;DR:如何让 Git 观察 .gitignore 文件中的新排除项?
| 归档时间: |
|
| 查看次数: |
8927 次 |
| 最近记录: |