git - 防止在 GitHub 的主分支上修改文件
问题描述
在我们的main
分支中,我们有一个包含特定配置的文件。我们称这个文件为.example-conf
。
当开发人员创建他的分支并拉取请求时。他可以更改.example-conf
文件的内容,因此他的拉取请求将基于这些配置执行我们的自定义脚本。.example-conf
合并时应忽略文件中的更改。
我们需要防止开发人员修改分支.example-conf
中的文件。main
但是当他们从main
.
我们尝试实施一个解决方案,.gitattributes
但这不起作用,因为在合并期间没有冲突。所以合并后的结果.example-conf
会被修改。我们需要它保持与main
分支相同。
我们使用 GitHub 进行版本控制。
如何才能做到这一点?
解决方案
据我了解,这些是你想要的东西:
- 没有人可以改变分支
.conf
。main
- 它们可以
.conf
在分支以外的main
分支中更改。
如果文件在分支中更改,您可以编写一个预提交挂钩来中止提交。要进行预挂钩,您可以编写一个 shell 脚本,如:.conf
main
#!/bin/sh
branch="$(git rev-parse --abbrev-ref HEAD)"
if [ "$branch" = "main" ]; then
if [ "$(git diff --exit-code .conf)" = "1" ]; then
echo "Cannot change .conf file in main branch. Aborting commit..."
echo "Unstage .conf to commit."
exit 1
fi
fi
将此脚本另存为pre-commit
. 通过使用使其可执行
chmod +x pre-commit
在目录中保存/移动这个可执行文件.git/hooks/
。
这将不允许任何人更改.conf
分支main
。但是,如果您确实想更改.conf
inmain
分支,则需要--no-verify
使用git commit
. .conf
这将绕过钩子,并且在您更改main
并提交时不会出错。
替代方案:特定于分支.gitignore
看到这个答案
。你可以有一个解决方法来拥有特定的分支.gitignores
。这意味着一个人可以.conf
在本地存储库feature
分支中更改他的更改,但不会将更改推送到远程feature
分支。feature
因此,来自->的 PRmain
不会在.conf
.
推荐阅读
- c# - 如何读取数据库表并将其显示在文本框中
- php - PrestaShop:创建特定价格后如何刷新购物车
- ios - 如何将一个数组中的单个项目附加到另一个数组?
- java - 检测特定块何时中断 [Spigot Plugin]
- flutter - 我是颤振和飞镖语言的新手,我正在构建 pokedex,我想为我的网格设置不同的颜色
- javascript - 函数返回错误返回
- python - 无法在 python 中打开 json.gz 文件。格式奇怪?
- reactjs - 错误:对象无效,因为 React 子代使用数组
- java - 如何从 cgo 返回的 C 字符串中释放 java 中的内存(使用 jna)?
- r - R中关于控制台与脚本的非常简单的问题