时间戳转换器

有没有办法配置 git 存储库以拒绝“git push --force”?

日期:2023-02-21     浏览:271    
【中文标题】有没有办法配置 git 存储库以拒绝“git push --force”?【英文标题】:Is there a way to configure git repository to reject 'git push --force'? 【发布时间】:2010-12-17 18:58:32 【问题描述】:

我想知道有没有办法防止在存储库上出现“git push --force”(仅在主分支上)?

假设我有远程 git 存储库并执行以下操作:

'git push' 到 'master'。它有效。 'git push --force' 到 'branch-1'。它有效。 'git push --force' 到 'master'。被拒绝了。

有可能吗?

感谢您的任何回答和建议。

BR, 大卫。

【问题讨论】:

【参考方案1】:

设置配置变量:

receive.denyNonFastForwards
receive.denyDeletes

将防止任何“强制”推送在所有分支中起作用。

如果您想要更好的预分支控制,那么您将不得不在远程存储库上使用“挂钩”,可能是“更新”挂钩。

有一个名为“update-paranoid”的示例更新钩子,它可能在“contrib”文件夹中的 git 发行版中满足您的需要(以及更多)。

gitweb link

【讨论】:

+1 表示钩子(原始版本:git.kernel.org/?p=git/git.git;a=blob_plain;f=contrib/hooks/…) 有什么方法可以为 GitHub 做到这一点? update-paranoid 在 GitHub 上:github.com/git/git/blob/master/contrib/hooks/update-paranoid【参考方案2】:

Github 已经引入了受保护分支的概念!

可以在Settings -> Branches -> Protected Branches 下找到。该功能现在可供所有用户使用 - 不仅仅是企业!

可以为任何分支和任何用户(包括管理员)启用此“保护”。

更多细节在这里 - https://help.github.com/articles/defining-the-mergeability-of-pull-requests/

因此不再需要任何钩子和任意代码。

【讨论】:

是的,但在编写 OP 时它并不存在。 :)【参考方案3】:

我编写了这个快速更新钩子来防止存储库中“dev”分支上的非快进更新(推送):

#!/bin/sh

REFNAME=$1
OLDSHA=$2
NEWSHA=$3

if [ "refs/heads/dev" != $REFNAME ]; then
  exit 0
fi

MERGEBASE=$(git merge-base $OLDSHA $NEWSHA)
if [ $OLDSHA = $MERGEBASE ]; then
  exit 0
fi

echo "Not a fast-forward on branch dev"
exit 1

【讨论】:

相关文章

为啥 git 一直告诉我它是“在后台自动打包存储库以获得最佳性能”?

{】为啥git一直告诉我它是“在后台自动打包存储库以获得最佳性能”?【英文标题】:Whydoesgitkeeptellingmeit\'s"Autopackingtherepositoryinbackgroundforoptimumperformance"?为什么git一直告诉我它是“在后台自动打包存储库以获得最佳性能...}

如何将丢失的 gradle-wrapper.jar 添加回 Git 存储库以供 Jenkins 完成其工作

{】如何将丢失的gradle-wrapper.jar添加回Git存储库以供Jenkins完成其工作【英文标题】:Howtoaddbackmissinggradle-wrapper.jartoGitrepoforJenkinstodoitsjob【发布时间】:2022-01-1302:01:16【问题描述】:每当我的Jenkins作业从GitHub克隆我的项目时,由于m...}

有没有办法列出终端中的所有 git 存储库?

{】有没有办法列出终端中的所有git存储库?【英文标题】:Isthereanywaytolistallgitrepositoriesinterminal?【发布时间】:2011-07-0308:33:01【问题描述】:我的系统上有几个git存储库,我想在终端中列出它们。我正在寻找的是这样的:/path/to/...}

有没有办法用 maven 签出 git 存储库到某个文件夹?

{】有没有办法用maven签出git存储库到某个文件夹?【英文标题】:Isthereawaytocheckoutgitrepository,tocertainfolderwithmaven?【发布时间】:2019-08-1400:35:04【问题描述】:我正在尝试自动将仅包含协议缓冲区(带有结构)的存储库下载到“资...}

git上传项目提示pushrejected:pushtoorigin/masterwasrejected解决办法

{...ected 推拒绝:推送到起源/主人被拒绝 直接是解决办法,直接打开你要上传代码的文件夹位置鼠标右键gitBashHere然后直接下面两行命令解决问题gitpulloriginmaster–allow-unrela}

! [远程拒绝] 镜像 git 存储库后的错误

{】![远程拒绝]镜像git存储库后的错误【英文标题】:![remoterejected]errorsaftermirroringagitrepository【发布时间】:2016-03-1919:54:24【问题描述】:我正在关注此文档:https://help.github.com/articles/duplicating-a-repository/gitclone--mirrorhttps://github.co...}

有没有办法从 git 只下载一个子目录?

{】有没有办法从git只下载一个子目录?【英文标题】:Isthereawaytodownloadonlyasubdirectoryfromgit?【发布时间】:2012-10-2516:46:28【问题描述】:有没有办法从git存储库只下载给定的子目录?假设我只想从https://github.com/djdeath/toys.git获取nya...}

Git克隆私人仓库,权限被拒绝

{...问题描述】:我正在尝试克隆另一个开发人员拥有的私有存储库。我没有与该开发人员直接沟通。他们向我发送了theirusername-id_rsa.pub文件和theirusername-priv.key.ppk文件。我了解ppk文件特定于Puttyssh客户端。有人可以向我}

减少存储库以聚合根

{】减少存储库以聚合根【英文标题】:ReducingRepositoriestoAggregateRoots【发布时间】:2011-07-0616:42:14【问题描述】:我目前几乎为数据库中的每个表都有一个存储库,并且希望通过将它们减少到仅聚合根来进一步使自己与DDD保持一致...}

无法将 master 推送到 Github -“origin”似乎不是 git 存储库/权限被拒绝

{】无法将master推送到Github-“origin”似乎不是git存储库/权限被拒绝【英文标题】:UnabletoGit-pushmastertoGithub-\'origin\'doesnotappeartobeagitrepository/permissiondenied【发布时间】:2010-10-2915:54:39【问题描述】:这个问题和我在understandingrebase,bra...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号