是否有限制代码推送到 Git 存储库的首选做法? [关闭]

Posted

技术标签:

【中文标题】是否有限制代码推送到 Git 存储库的首选做法? [关闭]【英文标题】:Is there a preferred practice for restricting code push to Git repositories? [closed] 【发布时间】:2019-03-02 19:14:42 【问题描述】:

我一直在研究保护 Git 存储库免受团队环境中开发人员意外代码推送的方法。目前我有更多的问题,然后是研究的答案。我使用过 TFS 和 VSTS 策略控制签入,但在 Git 中没有看到,或者不容易找到。

有没有人愿意分享的好习惯?

【问题讨论】:

为您的代码创建“主”存储库。然后为要限制的开发人员从“主”分叉一个单独的存储库。然后让他们做拉取请求以将代码合并到“主”中。如果他们做错了什么,拒绝公关。 Git 本身不管理用户。 另外,请查看名为“.gitignore”的文件的使用情况,这样您就不会意外签入要省略的文件,例如大型二进制文件、临时文件或其他文件。见:github.com/github/gitignore 【参考方案1】:

传统上,在 Git 中,这是通过控制每个存储库级别的权限来实现的。没有推送权限的开发者可以提出拉取请求或提交补丁。

但是,有一种方法可以获得更细粒度的访问控制。在 Git 中,这是通过 pre-receive 挂钩完成的。每当有人向它推送此脚本时,该脚本就会在您的 Git 服务器上执行,如果脚本以非零状态退出,则推送将被拒绝。您可以使用它来实施您想要的任何类型的访问控制。但是,编写 pre-receive 挂钩来强制执行访问控制并非易事,因此将某种软件与 Git 结合使用来控制访问更为常见,例如 GitHub、GitLab、Gerrit 或 Gitolite。

GitHub 允许您限制谁可以推送到特定分支。见:https://help.github.com/articles/enabling-branch-restrictions/

GitLab 允许您以类似的方式保护分支。见:https://docs.gitlab.com/ee/user/project/protected_branches.html

Gitolite 允许您配置权限。见:http://gitolite.com/gitolite/conf/

Gerrit 允许您强制提交在合并之前通过代码审查。见:https://www.gerritcodereview.com/

【讨论】:

以上是关于是否有限制代码推送到 Git 存储库的首选做法? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git Bash/Terminal 将文件推送到 Github 存储库的特定目录

如何仅将 git 存储库的子目录部署/推送到 Heroku?

如何将本地更改推送到 Bitbucket 上的远程 Git 存储库

如何将代码从新的本地文件夹推送到现有 Github 存储库的主分支并保留提交历史记录?

Git没有编辑远程存储库的访问权限

推送到 git 存储库时避免自动工作项链接