求教如何在 .gitignore_global 配置只忽略 github.com 目录下项目的 vendor 目录?

2023-05-16 22:57:46 +08:00
 ryalu

rt ,正常项目目录下的 vendor 目录会提交上去,但对 gitHub.com/ 目录下的项目中的 vendor/ 目录进行忽略。

查了一些资料以及问了 gpt ,但都感觉没有生效。

chatgpt:

# Ignore vendor/ directory in github.com/ projects
github.com/*/vendor/

自己也尝试了些:

/Users/stone/go/src/github.com/**/vendor/*

/github.com/**/vendor/

求大佬指导下该怎么配置

1247 次点击
所在节点    git
18 条回复
huijiewei
2023-05-16 23:00:26 +08:00
为什么要放在 gitignore_global 里面。放到 github.com 目录里面忽略就好了
hxy100
2023-05-16 23:04:36 +08:00
你这个需求很奇怪,.gitignore_global 应该不支持这种复杂的配置吧,直接配置单个项目的 .gitignore 就好了,如果忽略的内容需要经常变来变去,可以换个思路,通过 Hook 钩子自动执行命令来更新.gitignore ?
ryalu
2023-05-16 23:10:24 +08:00
@huijiewei #1 github.com 下面是从 github 上拉下来的项目仓库,不想对每个仓库的 .gitignore 都加上 vendor/ 忽略。
但是不知道怎么对 github.com/ 目录下的项目配置 .gitignore 。例如这样的项目目录层级:
ryalu
2023-05-16 23:17:11 +08:00
@hxy100 #2 大多数的项目不需要忽略 vendor/ 目录,但对于 g*/ 这个目录下的项目需要忽略 vendor/ 目录,因为都是拉的开源项目不方便修改 .gitignore 文件,这就导致每次提交的时候都要特别注意下这个
huijiewei
2023-05-16 23:24:13 +08:00
直接在 github_com 目录下面加一个 .gitignore

```
**/vendor
```

不行么
SingeeKing
2023-05-16 23:32:48 +08:00
@ryalu 配置 .git/info/exclude 嫌一个个配置麻烦写个脚本一键配置好
Nile20
2023-05-16 23:37:43 +08:00
这个问题适合认真研究文档,可能不适合 ChatGPT 。我测试下来 work:
写法:
github.com/**/vendor/

目录结构
│ .cute.c
│ .gitignore

├─github.com
│ ├─project
│ │ └─vendor
│ │ ayaka.c
│ │
│ └─vendor
│ is.c

└─vendor
pretty.c
效果( git add . -n ):
add '.cute.c'
add '.gitignore'
add 'vendor/pretty.c'
Nile20
2023-05-16 23:41:18 +08:00
没想到目录树发出来是这种效果……看不清层级了。补个路径形式的吧
……补不出来,v2ex 说我在 spamming
ryalu
2023-05-16 23:44:31 +08:00
@huijiewei #5 不行,github_com/ 不是一个项目仓库,只是一个普通文件夹
ryalu
2023-05-16 23:55:55 +08:00
@Nile20 #8 我都试过,都没有生效。
.gitignore_global 路径:/Users/stone/.gitignore_global
github_com 目录路径: /Users/stone/go/src/github_com/

然后我在 .gitignore_global 中尝试了:
/Users/stone/go/src/github_com/**/vendor/

~/go/src/github_com/**/vendor/

go/src/github_com/**/vendor/

/github_com/**/vendor/

...都没有生效。
项目 vendor 的路径是:/Users/stone/go/src/github_com/elastic/go-elasticsearch/vendor

明天再研究 https://git-scm.com/docs/gitignore 看看
Nile20
2023-05-17 00:01:11 +08:00
@ryalu 很奇怪,我是测试完再发的,测试用的工程打包在这里了 https://cowtransfer.com/s/754fd4907dbd46
你是不是工程里还有别的 ignore 在生效?
Nile20
2023-05-17 00:09:04 +08:00
你的.gitconfig 中配置的.gitinore_global 生效了么?(要在.gitconfig 里配置并且使用完整路径)
我之前的 Demo 是放在.gitignore 里的,但是刚刚测试放在.gitignore_global 里也生效的。

[core]
excludesfile = ~/.gitignore_global
ryalu
2023-05-17 00:10:30 +08:00
@Nile20 #11 github_com/ 目录下都是克隆下来的项目,每个项目都是独立的 .git,都包含 .gitignore
ryalu
2023-05-17 00:14:44 +08:00
目前看来只有在项目拉下来后手动将 vendor 目录加到 .git/info/exclude 中了

echo "vendor/" >> .git/info/exclude
ryalu
2023-05-17 00:17:02 +08:00
@Nile20 #12 这个是生效了的。你的 demo 事例中,project 并不是一个独立的 git 仓库,也不包含自己 .gitignore 文件。
Faithlv
2023-05-17 02:38:14 +08:00
不应该吧,这种格式会不支持?
Faithlv
2023-05-17 02:47:03 +08:00
mcfog
2023-05-17 07:28:47 +08:00
可以用 includeif 实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/940541

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX