【问题标题】:Global Git Ignore with absolute path全局 Git 忽略绝对路径
【发布时间】:2018-09-18 14:42:19
【问题描述】:

我有一个项目,我想忽略一个名为 .eslintrc.js 的根文件。该团队只想在构建工具中而不是在他们的 IDE 中进行 lint。我想将此添加到我机器上的根目录并忽略它不使用该项目的.gitignore

我也不想将/.eslintrc.js 添加到我的~/.gitignore_global 文件中,因为我有其他项目想忽略掉毛规则。

我已经尝试添加

~/code/repo-name/.eslintrc.js

在我的 ~/.gitignore_global 文件中,但 git 无法识别规则。

如何制定适用于某些项目而不适用于其他项目的全局 git 忽略规则?

我可以将 git 设置为使用完整路径来忽略某些内容吗?

【问题讨论】:

  • 我刚刚发现了一个特定于 ES Lint 的解决方案,所以我不需要那种能力的答案,但是 git 解决方案会很棒,因为同样的问题很容易webpack 或 browserslist任何其他 特定的。

标签: git gitignore


【解决方案1】:

首先,值得一提的是关于忽略文件模式的一个小技巧:如果它们包含前导或嵌入的斜杠,它们将应用于多个名称组件,但如果它们不包含,它们将应用于一个名称组件(在 Git 的任何目录中)当时正在递归地遍历)。如果有一个斜杠,则在删除尾部斜杠后应用此规则,因此 .gitignore 文件包含:

abc
def/ghi

忽略所有从该点“向下”出现的名为abc 的文件(和目录),同时仅忽略出现点的def/ghi。第二行完全等价于/def/ghi

我可以将 git 设置为使用完整路径来忽略某些内容吗?

没有。 Gitignore 模式要么与忽略文件所在的目录(对于大多数 .gitignore 文件)或项目根目录(对于 .git/info/exclude 和您的个人忽略文件)相关。也就是说,假设项目位于/home/arron/project/proj1 并且:

$ cd ~/project/proj1/
$ cat .gitignore
/abc
sub/file
$ cat sub/.gitignore
/dir/

所有这些条目都包含/ 或以/ 开头,因此顶级.gitignore 抑制对项目顶级中未跟踪文件abc 的投诉以及对目录中未跟踪文件file 的投诉sub。同时,sub 目录有自己的.gitignore,它不仅抑制了对sub 中目录dir内容 的投诉,而且阻止了Git,即Git 确实根本不查看project/proj1/sub/dir/ 内部(因此既不会发现也不会抱怨该目录任何未跟踪的文件)。

请注意,如果我们修改两个 .gitignore 文件,以便我们有:

$ cat .gitignore
/abc
$ cat sub/.gitignore
/file
/dir/

被忽略的文件集保持完全相同。

【讨论】:

  • 我一直在寻找 git ignore 如何工作近一周的解释,谢谢。
【解决方案2】:

对于您不能放在项目.gitignore 中的单独本地文件,您可以像在常规.gitignore 中一样将它们添加到.git/info/excludes

# Ignore local ESLint config
.eslintrc.js

这也适用于文件夹,但还有另一种方法:在该文件夹内添加另一个 .gitignore 文件,仅包含一行,包含 *

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-20
    相关资源
    最近更新 更多