【发布时间】:2023-02-08 02:36:07
【问题描述】:
根据显示的错误消息,如果我尝试从 Azure DevOps GIT 存储库中删除分支,则需要 Force Push 权限:
然而,允许“强制推送”也允许重写历史。甚至在配置这些权限的地方也明确说明了这一点。
在我对 Git 的理解中,分支无非是书签/更改的快捷方式。在某种程度上,它们是一种特殊的标签。如果这些在合并期间被丢弃,则不需要强制推送权限。
我想授权人们能够删除分支而不给他们混淆历史的权利。他们不应该能够编辑/删除实际的更改集,但他们可以对这些特殊类型的标签做所有想做的事情。我该如何配置?
还是我误解了允许强制推送可以重写的历史数量?我只想保留由谁签入的代码更改。允许强制推送可以打破这个历史吗?
【问题讨论】:
-
什么会阻止他们删除分支并推出它的新版本(因此......如果他们愿意的话可以完全重写它的历史)?
-
所以我在一个分支中做了一些提交,而其他人决定扔掉我的分支并进行新的提交?在那种情况下,所有提交都是由另一个人完成的。在极少数情况下,我仍然可以在存储库中找到我的(孤立的)提交。但同样 - “重写历史”表明其他人可以修改或更改我的提交。这可能是我这边的误会。
-
git commit -m "Haha I'll destroy this app" --author="realbart"(我的意思是,git 本身没有身份验证功能,人们可以提交由您“创作”并推送它们。) -
@RomainValeri 好点:你确实可以在没有强制推送的情况下伪造凭据/欺骗其他用户,除非你使用签名提交,但据我所知,没有办法阻止这些。那么推荐的处理方法是什么?只保留曾经被推过的每一个分支吗?
标签: git azure-devops version-control git-push