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

.gitignore 如何拆分为多个文件?

  •  
  •   cheneydog · 2023-09-14 14:12:20 +08:00 · 2414 次点击
    这是一个创建于 436 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这个文章的第六点有提到一种方法: https://www.python100.com/html/41V3I24XE5OP.html

    我试验了好像不成功,是版本不对还是被忽悠了?

    17 条回复    2023-09-15 11:23:46 +08:00
    cheneydog
        1
    cheneydog  
    OP
       2023-09-14 14:21:11 +08:00
    如果用 IDEA 的话,.idea 目录全都不提交的吧,有什么有用的东西么?为什么大家的忽略规则写那么麻烦,一个一个的忽略。
    hicdn
        2
    hicdn  
       2023-09-14 14:23:47 +08:00
    可以用 ~/.gitignore_global
    cheneydog
        3
    cheneydog  
    OP
       2023-09-14 14:35:10 +08:00
    @hicdn 规则还堆在一起呀。不能分为 idea 的,自定义的,java 的,这个么分开么?
    itbeihe
        4
    itbeihe  
       2023-09-14 14:35:28 +08:00   ❤️ 3
    你问题描述不够清晰,没有描述具体场景,我针对你的问题拆解了 2 个场景,不知道你具体想解决哪个场景?

    场景 1. 项目内需要多个 gitignore 文件?

    这个在官方推荐的《 Git Pro 》中有说明:
    “在最简单的情况下,一个仓库可能只根目录下有一个 .gitignore 文件,它递归地应用到整个仓库中。 然而,子目录下也可以有额外的 .gitignore 文件。子目录中的 .gitignore 文件中的规则只作用于它所在的目录中。 ( Linux 内核的源码库拥有 206 个 .gitignore 文件。)“

    地址: https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%AE%B0%E5%BD%95%E6%AF%8F%E6%AC%A1%E6%9B%B4%E6%96%B0%E5%88%B0%E4%BB%93%E5%BA%93#_ignoring

    场景 2:多个项目都想隐藏同样一批文件,如 mac 的. DS_Store 文件:
    可以通过配置全局忽略文件来实现。
    同样可以参照: https://git-scm.com/book/zh/v2/%E8%87%AA%E5%AE%9A%E4%B9%89-Git-%E9%85%8D%E7%BD%AE-Git#_core_excludesfile

    找个好教材学习 git 真的很有必要。国内二手文章真是坑人。
    dzdh
        5
    dzdh  
       2023-09-14 14:38:35 +08:00
    itbeihe
        6
    itbeihe  
       2023-09-14 14:53:07 +08:00
    @cheneydog 自定义的,idea 的也就几十行啊,放根 ignore 中呗。然后各自项目放子文件夹,放各自项目里呗。
    oott123
        7
    oott123  
       2023-09-14 17:05:32 +08:00
    这个网站感觉内容是 AI 生成的……不存在引用其它文件的办法。
    cheneydog
        8
    cheneydog  
    OP
       2023-09-14 17:07:27 +08:00
    @itbeihe 跟场景 2 接近,但也不是。

    /项目 1
    .gitignore
    idea.gitignore
    python.gitignore

    ---

    /项目 2
    .gitignore
    idea.gitignore
    java.gitignore
    maven.gitignore

    ---

    /项目 3
    .gitignore
    maven.gitignore

    ---

    /项目 4
    .gitignore
    java.gitignore
    python.gitignore
    js.gitignore

    就是想像代码一样分模块写么
    itbeihe
        9
    itbeihe  
       2023-09-14 17:16:16 +08:00
    @cheneydog 你考虑下现在的常规处理方案

    ├── gitignore_global (用户全局 gitignore )
    ├── 混合项目 git-a
    │   ├── java 子项目
    │   │   └── .gitignore ( java )
    │   ├── js 子项目
    │   │   └── .gitignore ( js )
    ├── .gitignore (+通用)
    ├── 混合项目 git-b
    │   ├── python 子项目
    │   │   └── .gitignore ( python )
    │   ├── js 子项目
    │   │   └── .gitignore ( js )
    │   ├── java 子项目
    │   │   └── .gitignore ( java )
    ├── .gitignore (idea+通用)
    flyqie
        10
    flyqie  
       2023-09-14 17:43:22 +08:00 via Android   ❤️ 3
    好奇为什么要拆分。。
    yolee599
        11
    yolee599  
       2023-09-14 17:52:52 +08:00
    试试这个:
    cat idea.gitignore java.gitignore maven.gitignore > .gitignore
    flyqie
        12
    flyqie  
       2023-09-14 17:56:29 +08:00 via Android
    @yolee599 #11

    楼主说的应该是类似支持 import xxx.gitignore 这样的语法,不是手动合并。
    shawndev
        13
    shawndev  
       2023-09-14 18:19:34 +08:00
    SmallZheng
        14
    SmallZheng  
       2023-09-14 18:38:48 +08:00
    @yolee599 #11 再把 .gitignore 加到 .gitignore 里?
    ysc3839
        15
    ysc3839  
       2023-09-15 06:34:40 +08:00 via Android
    大概是被骗了,他说在 .gitignore 文件中添加来进行引用,但是 git 怎么知道你是要引用还是要忽略那个文件呢?
    目前能实现的是用 git config 设置
    https://mednoter.com/gitignore-global.html
    AoEiuV020JP
        16
    AoEiuV020JP  
       2023-09-15 10:56:34 +08:00   ❤️ 1
    好奇你的 gitignore 是有几千行?
    fpure
        17
    fpure  
       2023-09-15 11:23:46 +08:00
    从来没遇到 gitignore 需要拆分的情况
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   990 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 20:06 · PVG 04:06 · LAX 12:06 · JFK 15:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.