如何强制 git 将点文件添加到存储库
Git 似乎总是忽略这些。
当我输入 git add . 时,会添加 GIT_DIR 中的点文件,但不会添加子目录中的点文件。另一方面, git add subdir/.dotfile 不起作用。
我尝试了 git add -f
并将 !.*
放入 GIT_DIR/.git/info/exclude
中。
Git seems to always ignore these.
When I type git add .
, dotfiles in GIT_DIR
are added, but not from subdirectories. On the other hand, git add subdir/.dotfile
won't work.
I tried git add -f
and putting !.*
in GIT_DIR/.git/info/exclude
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
git add .
和git add dir/.dot
对于我来说,使用我现在手边的未经修饰的 1.6.6.1 和 1.7.0 版本的 Git 可以很好地工作。您使用什么版本的 Git?您的子目录实际上是子模块(独立管理)吗?
默认情况下不排除“点文件”,但也许您的系统、存储库或工作树上的某些配置已将它们设置为这种方式。如果它们出现在 git ls-files --exclude-standard -oi 中,那么它们将被忽略,“!.*”是“取消忽略”它们的正确方法。但为了有效,这种模式必须处于正确的位置。忽略按以下顺序处理:
git config core.excludesfile
报告的文件(可以通过以下方式设置)GIT_EDITOR=echo git config --system --edit
获取其路径名)。当路径名与一个文件中的模式匹配时,不会查阅后续文件。每个文件中的最后一场比赛“获胜”。 $GIT_DIR/info/exclude 中的模式永远不能覆盖 .gitignore 文件中的模式。因此,如果文件被忽略(根据 git ls-files --exclude-standard -oi )并且如果 $GIT_DIR/info/exclude 中存在“!.*”无效,然后检查所有适用的 .gitignore 文件以查找罪魁祸首。
git add .
andgit add dir/.dot
work fine for me with the unadorned 1.6.6.1 and 1.7.0 versions of Git that I have handy right now.What version of Git are you using? Are your subdirs actually submodules (which are managed independently)?
“dot files” are not excluded by default, but maybe some bit of configuration on your system, repository, or working tree has them set that way. If they show up in
git ls-files --exclude-standard -oi
then they are being ignored and "!.*" is the right way to ‘unignore’ them. But to be effective, that pattern has to be in the right place. Ignores are processed in this order:git config core.excludesfile
(which could be set byGIT_EDITOR=echo git config --system --edit
to get its pathname)).When a pathname matches a pattern in one file, subsequent files are not consulted. The last match in each file “wins”. A pattern in $GIT_DIR/info/exclude can never override a pattern in a .gitignore file. So, if the files are being ignored (per
git ls-files --exclude-standard -oi
) and if "!.*" in $GIT_DIR/info/exclude is ineffective, then check all the applicable.gitignore
files for the culprit.您可以通过路径名专门添加它们,例如,
或者
(最好小心
-name
,因为您不一定希望使用其来选取每个目录。
条目。)但到目前为止,最简单的方法是使用
git gui
。只需单击文件即可。You can add them specifically by pathname, e.g.,
or
(It's good to be careful with the
-name
because you don't necessarily want to pick up every directory with its.
entry.)But by far the easiest way to do this is with
git gui
. Just click on the files.如果您只需要添加几个 .dotfiles,我建议使用
-f
标志,因为简单的git add .yourDotFile
在 git 版本 2.28.8 上不起作用 并且您不想弄乱全局.gitignore
。因此使用 git add .yourDotFile -fIf there are only few .dotfiles you need to add, I recommend using
-f
flag since simplegit add .yourDotFile
does not work on git version 2.28.8 and you do not want to mess with global.gitignore
. Therefore usegit add .yourDotFile -f
我只是强迫它:
干杯。
I just forced it with:
Cheers.
我使用
grep -vP '^.\/.git'
排除以.git
开头的所有内容,并查找获取所有文件,包括所有隐藏文件。i use
the
grep -vP '^.\/.git'
exclude everthing wich start with.git
and find get all files include all hidden files.我不喜欢使用“查找”的想法,因为它可能会找到你告诉 git 忽略的东西。您可以使用 bash 脚本。该脚本只会“添加”已修改的文件,而不是未跟踪的文件:
I dont like the idea of using a 'find' as it might find things you told git to ignore. You could use a bash script. This script will only 'add' a file that is modified, not untracked: