V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
ryalu
V2EX  ›  git

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

  •  
  •   ryalu · 2023-05-16 22:57:46 +08:00 · 1264 次点击
    这是一个创建于 581 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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/
    
    

    求大佬指导下该怎么配置

    image

    第 1 条附言  ·  2023-05-17 11:17:01 +08:00

    尝试了 v 友回复中的几种方式:

    1. .git/info/exclude 在 github.com/ 下的项目,每次克隆回来手动在 .git/info/exclude 中加上 vendor/
    echo "vendor/" >> .git/info/exclude
    
    1. includeif 在全局的 .gitconfig 中配置 includeif (对 github.com/ 单独使用一套配置 .gitconfig_github,在 .gitconfig_github 中单独使用 excludesfile = /Users/artist/.gitignore_github)
    [includeIf "gitdir:~/go/src/github.com/"]
    	path = .gitconfig_github
    

    最后只对特殊目录下项目的 .gitignore 就生效了

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

    ```
    **/vendor
    ```

    不行么
    SingeeKing
        6
    SingeeKing  
       2023-05-16 23:32:48 +08:00 via iPhone   ❤️ 1
    @ryalu 配置 .git/info/exclude 嫌一个个配置麻烦写个脚本一键配置好
    Nile20
        7
    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
        8
    Nile20  
       2023-05-16 23:41:18 +08:00
    没想到目录树发出来是这种效果……看不清层级了。补个路径形式的吧
    ……补不出来,v2ex 说我在 spamming
    ryalu
        9
    ryalu  
    OP
       2023-05-16 23:44:31 +08:00
    @huijiewei #5 不行,github_com/ 不是一个项目仓库,只是一个普通文件夹
    ryalu
        10
    ryalu  
    OP
       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
        11
    Nile20  
       2023-05-17 00:01:11 +08:00
    @ryalu 很奇怪,我是测试完再发的,测试用的工程打包在这里了 https://cowtransfer.com/s/754fd4907dbd46
    你是不是工程里还有别的 ignore 在生效?
    Nile20
        12
    Nile20  
       2023-05-17 00:09:04 +08:00
    你的.gitconfig 中配置的.gitinore_global 生效了么?(要在.gitconfig 里配置并且使用完整路径)
    我之前的 Demo 是放在.gitignore 里的,但是刚刚测试放在.gitignore_global 里也生效的。

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

    echo "vendor/" >> .git/info/exclude
    ryalu
        15
    ryalu  
    OP
       2023-05-17 00:17:02 +08:00
    @Nile20 #12 这个是生效了的。你的 demo 事例中,project 并不是一个独立的 git 仓库,也不包含自己 .gitignore 文件。
    Faithlv
        16
    Faithlv  
       2023-05-17 02:38:14 +08:00 via Android
    不应该吧,这种格式会不支持?
    Faithlv
        17
    Faithlv  
       2023-05-17 02:47:03 +08:00 via Android
    mcfog
        18
    mcfog  
       2023-05-17 07:28:47 +08:00 via Android   ❤️ 1
    可以用 includeif 实现
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3166 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 12:54 · PVG 20:54 · LAX 04:54 · JFK 07:54
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.