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

如何在 git 提交前将生产版本和开发版本的配置进行区分

  •  
  •   timerring · 12 天前 via iPhone · 1137 次点击
    最近遇到了一个困扰我的问题,我在开发项目时,不想将我的项目中一些隐私的配置提交到 github 上,于是我 gitignore 了这些文件,然后为了其他人 clone 下来能直接用,我又添加了对应的 example 配置文件。
    配置命名分别是:
    我 gitignore 的 config.toml
    项目展示的 config-example.toml
    源码中有对 toml 的很多引用,导致我每次开发完 push 到 github 的时候都要把我源码中的 config 改为 example 。非常麻烦,想问问大家有没有什么好的解决方法或者插件什么的,能够让我 push 的时候丝滑切换。
    第 1 条附言  ·  7 天前
    项目主要是用 shell 和 python 写的,前期我是全用的 shell ,最近想发布所以在尝试改为 Python 。我正在迭代 python 版本,项目主要功能是 b 站录制压制弹幕和字幕然后自动上传,感谢指教 : https://github.com/timerring/bilive
    11 条回复    2024-12-04 12:48:46 +08:00
    newaccount
        1
    newaccount  
       12 天前
    读取环境变量
    GeruzoniAnsasu
        2
    GeruzoniAnsasu  
       12 天前
    > 为了其他人 clone 下来能直接用,我又添加了对应的 example 配置文件

    本来项目也不应该其它人 clone 完就能直接用,应该是 clone 完,自动 build 一下能直接用,要么就下载 release 后能直接用

    增加个 build 环节就好了
    Vegetable
        3
    Vegetable  
       12 天前
    完全没看懂,你 push 的时候改的是什么?
    lambdaq
        4
    lambdaq  
       12 天前
    conf/prod.toml
    conf/beta.toml
    conf/local.toml
    conf/ci.toml

    启动的时候必须指定(命令参数、环境变量等)

    如果没指定你提示个启动失败,教一下怎么指定。
    InDom
        5
    InDom  
       12 天前
    通过 .env 配置, 此文件不提交到 git, 你提供的应该是 example.env,

    项目通过 env('DB_HOST', 'mysql'), 实现.
    InDom
        6
    InDom  
       12 天前
    其他人 clone 项目后,应该将 example.env 改为 .env ,并适当配置后使用.

    希望没有 .env 就能使用, 那就是放在 env() 的默认值里面.

    如果你非要用 .env , 还非得自己额外覆盖, 那就加一个 env = merge('.env', 'local.env')
    Akkuman
        7
    Akkuman  
       11 天前 via Android
    配置支持从环境变量读取,然后是配置文件,如果有配置中心可以也可以用配置中心,然后用 direnv 或者 mise 这类工具自动应用环境变量文件,gitignore 中忽略掉环境变量配置文件
    vxf
        8
    vxf  
       11 天前
    在前面的基础上补充一点: 不同部署平台还可以考虑自动化生成对应平台的打包脚本, 这样不同环境的配置文件不会混乱
    nightwitch
        9
    nightwitch  
       11 天前
    git update-index --skip-worktree <file_name>

    跳过部分你本地的修改,又不影响你工作
    cumt21g
        10
    cumt21g  
       10 天前
    up 的意思是有些东西是自己私有的,可能只是自己开发时候用到的东西,不应该提交到代码库,又想被 git 管理,对么?
    timerring
        11
    timerring  
    OP
       7 天前
    @newaccount 是的目前就是这么设置的
    @GeruzoniAnsasu 目前在看这方面的知识 这算是我第一次开发脚本类型的工程项目😂
    @Vegetable 改的是项目中对启动配置的引用 我为了区别开来设置了两个配置文件 平常开发必须使用我自己的配置进行测试
    @lambdaq 是的 最近在改
    @vxf 感谢建议 我在尝试
    @cumt21g 是这个意思
    @nightwitch 感谢 这个确实很有帮助
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5087 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 01:25 · PVG 09:25 · LAX 17:25 · JFK 20:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.