我想将 Git 设置为全局忽略某些文件。
我已将 .gitignore
文件添加到我的主目录 (/Users/me/
) 中,并在其中添加了以下行:
*.tmproj
但它并没有忽略这种类型的文件,知道我做错了什么吗?
.git/info/exclude
中,因此不一定要放在全局文件中。此外,默认和自动全局 gitignore 文件是 $HOME/.config/git/ignore
。
您需要设置全局 core.excludesfile
配置文件以指向此全局忽略文件,例如:
*nix 或 Windows git bash:
git config --global core.excludesFile '~/.gitignore'
窗口命令:
git config --global core.excludesFile "%USERPROFILE%\.gitignore"
Windows PowerShell:
git config --global core.excludesFile "$Env:USERPROFILE\.gitignore"
对于 Windows,它设置为位置 C:\Users\%username%\.gitignore
。您可以通过执行以下操作来验证配置值是否正确:
git config --global core.excludesFile
结果应该是您的用户配置文件 .gitignore
的扩展路径。确保该值不包含未扩展的 %USERPROFILE%
字符串。
重要提示:以上命令只会设置 git 将使用的忽略文件的位置。该文件仍必须在该位置手动创建并填充忽略列表。 (来自 muruge 的评论)
您可以在 https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer 阅读有关该命令的信息
在重新配置全局排除文件之前,您可能需要使用以下命令检查它当前的配置:
git config --get core.excludesfile
就我而言,当我运行它时,我看到我的全局排除文件配置为
~/.gitignore_global
git config --get core.excludesFile
不会返回它。如果没有返回任何内容,则当前“配置”的内容类似于 ~/.config/git/ignore
。请参阅下面的答案:stackoverflow.com/a/22885996/9849440
尽管其他答案是正确的,但它们正在设置全局配置值,而全局 git 忽略文件有一个默认的 git 位置:
*尼克斯:
~/.config/git/ignore
视窗:
%USERPROFILE%\git\ignore
您可能需要创建 git
目录和 ignore
文件,然后您可以将全局忽略放入该文件中,仅此而已!
放置模式的文件取决于模式的使用方式。
…
用户希望 Git 在所有情况下都忽略的模式(例如,由用户选择的编辑器生成的备份或临时文件)通常进入用户 ~/.gitconfig 中由 core.excludesFile 指定的文件。它的默认值为 $XDG_CONFIG_HOME/git/ignore。如果 $XDG_CONFIG_HOME 未设置或为空,则使用 $HOME/.config/git/ignore 代替。
git
命令创建/修改的。由于它是每个用户目录中的设置文件,我认为它不应该被覆盖。
~/.config/git/ignore
。
从头开始创建全局 gitignore:
$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
第一行将目录更改为 C:/Users/User 之后,您创建一个扩展名为 .gitignore_global 的空文件,最后将全局忽略设置为该文件。然后你应该用某种记事本打开它并添加所需的忽略规则。
在你的主目录中创建一个 .gitignore 文件
touch ~/.gitignore
向其中添加文件/文件夹
例子
# Files
*.gz
*.tmproj
*.7z
# Folders
.vscode/
build/
# If folders don't work, you can still do this
.vscode/*
build/*
检查一个 git 是否已经有一个全局 gitignore
git config --get core.excludesfile
告诉 git 文件在哪里
git config --global core.excludesfile '~/.gitignore'
瞧!!
.gitignore_global
,这不是消除与真实 .gitignore 冲突的可能性的更好选择吗?
从 here。
如果您在 repo 中创建一个名为 .gitignore 的文件,git 在查看要提交的文件时将使用其规则。请注意,在将规则添加到此文件以忽略它之前,git 不会忽略已经跟踪的文件。在这种情况下,必须取消跟踪文件,通常使用:
git rm --cached filename
是你的情况吗?
core.excludesfile
文件的解释似乎与 .gitignore
文件不同。如果您想忽略整个目录,只需输入目录名称,如 .vscode/
而不是 .vscode/*
如果你使用 Unix 系统,你可以通过两个命令来解决你的问题。第一个初始化配置,第二个用要忽略的文件更改文件。
$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore
记住运行命令
git config --global core.excludesfile '~/.gitignore'
只会设置全局文件,但不会创建它。对于 Windows,请检查您的用户目录中的 .gitconfig
文件,然后根据您的偏好对其进行编辑。在我的情况下是这样的:
[core]
excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore
我可以通过在我的 /users/me/.gitignore-global
文件中包含 .tmproj
或 *.tmproj
来忽略 .tmproj
文件。
请注意,文件名是 .gitignore-global
而不是 .gitignore
。在 /users/me
目录中名为 .gitignore
的文件中包含 .tmproj
或 *.tmproj
不起作用。
core.excludesfile
配置匹配,您调用什么全局忽略文件并不重要。
.tmproj
文件未被忽略的原因可能是因为用户的 excludesfile
不是 .gitignore
。
您应该为此创建一个排除文件。查看 this gist,这很不言自明。
但是,要解决您的问题,您可能需要使用 git rm --cached path/to/.tmproj
或 git add
和 commit
您的 .gitignore
文件取消索引 .tmproj
文件(如果您已将其添加到索引中)。
git rm --cached
吗?
在 linux 的 windows 子系统上,我必须通过 cd ~/
然后 touch .gitignore
导航到子系统根目录,然后在那里更新全局 gitignore 配置。
我希望它可以帮助某人。
如果 .gitignore
方法不适合您,另一种可能的解决方案是:
git update-index --skip-worktree path_to_file
这将忽略对该文件的本地和上游更改,直到您决定再次允许它们:
git update-index --no-skip-worktree path_to_file
您可以获得标记为已跳过的文件列表:
git ls-files -v . | grep ^S
请注意,与 --skip-worktree
不同,一旦拉动上游更改,--assume-unchanged
状态就会丢失。
如果您使用的是 VSCODE,则可以获取此扩展程序来为您处理任务。它会在您每次保存工作时监视您的工作区,并帮助您自动忽略您在 vscode settings.json 中指定的文件和文件夹ignoreit (vscode extension)
HEAD
或您的索引中,无论该文件是否曾被跟踪,都应该没有任何区别。如果您将git status
、git config core.excludesfile
的输出添加到您的问题中,这可能会有所帮助。~/.gitignore
内的行首使用#
在全局忽略文件中添加注释吗?%USERPROFILE%
变量使其工作。我必须使用 *nix 目录分隔符输入文件的完整路径。例如 core.excludesfile C:/Users/User/.gitignore