Git 在拉取请求时排除文件

时间:2021-07-20 11:30:51

标签: git github gitlab bitbucket

我们有一个存储库,其中有特定于环境、Dev、UAT、PROD 的分支。 每个环境都有一个包含特定配置集的文件。我们不能将此文件作为属性文件或模板文件。

当我们从 dev --> UAT 或 dev --> PROD 提出合并代码的 Pull Request 时。该文件将被覆盖..

.gitignore 只会在合并时隐藏它,但是一旦我们批准并合并代码,它就会被合并..

2 个答案:

答案 0 :(得分:2)

您应该在没有提交的情况下进行合并,如下所示:

git checkout prod-branch
git merge --no-commit uat-branch
git restore properties-file
git commit

答案 1 :(得分:2)

总的来说,Git 开发人员的建议是不要这样做。可以为此文件使用自定义合并驱动程序,但这不适用于拉取请求,因为托管平台没有您的自定义合并驱动程序。由于合并驱动程序工具的配置未存储在存储库中,因此他们甚至不会知道您的工具的名称,即使他们知道(出于安全原因),他们也不会执行任意程序。

如果您仍想使用自定义合并驱动程序,您可以创建一个机器人来为您合并拉取请求。对于自定义合并驱动程序,此文件的配置将与 merge 中的 .gitattributes 属性一起存储,并且您将在配置中设置合并驱动程序的名称。设置 gitattributes 手册页以了解详细信息。

否则,推荐的方法是使用模板文件并从环境中填充它,或者将所有配置存储在一个目录中,然后在部署时复制或符号链接适合您的环境的配置。请注意,您当然不应该在存储库中存储任何类型的机密,因此从环境中读取数据是唯一安全的方法。