首页 > 解决方案 > 如何在 git 中维护生产和开发分支?

问题描述

在我的项目中,我有这个constants.ts文件存储我的API_URL. 我想在我的生产(主要)和开发分支中保留两个 API_URL。

例如:开发 -> API_URL = 'http://localhost:4000' main -> APIURL = 'https://backend.com'

但是当我更改 API_URL 并提交合并主分支和开发分支时,它检测为更改。所以如果我在主分支中合并它的常量文件也会发生变化。如何忽略此文件的更改?

标签: gitgithubversion-controldevelopment-environmentproduction

解决方案


在我的项目中,我有这个constants.ts文件来存储我的API_URL.

这个想法是存储两个文件:

  • constants.ts.main
  • constants.ts.dev

(我用这里main代替master

  • constants.ts从现在开始保持忽略: echo constants.ts>>.gitignore

这意味着在constants.ts本地生成正确的文件:合并devmain.

然后,在每个分支中,您将根据当前的执行环境,从其中一个文件中生成包含正确内容的 . constants.ts

生成脚本将确定签出分支的名称:

branch=$(git rev-parse --symbolic --abbrev-ref HEAD)

最后,您将(在.gitattributes声明中)注册一个内容过滤器驱动程序

弄脏 (图片来自“ Customizing Git - Git Attributes ”,来自“ Pro Git book ”)

与文件关联的smudge脚本将通过在正确的值文件中查找值constants.ts来生成(自动、在git checkoutgit switch)实际文件。 生成的实际文件仍然被忽略(由)。constants.tsconstants.ts.<branch>
constants.ts.gitignore

请参阅“分支之间的 git smudge/clean filter ”中的完整示例。


推荐阅读