6

git branch -d mybranch如果该分支未完全合并,Git 默认会拒绝删除本地分支(通过)。

但是,如果我通过 删除远程分支git push origin --delete mybranch,则如果分支未完全合并,则不会发出任何警告。

这似乎相当危险:自从我上次获取分支以来,其他人可能已经将更新推送到分支,因此远程分支似乎比本地分支更容易意外删除未合并的分支。

那么,如果我删除了一个远程未合并的分支,为什么 git 不会发出警告呢?有没有办法让它警告或拒绝删除?

注意:我意识到理想情况下我应该git pull在删除分支之前将其删除,并确保它已完全合并。但是,每个人都会犯错,我希望有一个安全网。

4

2 回答 2

5

但是,如果我通过 git push origin --delete mybranch 删除远程分支,则如果分支未完全合并,则不会发出任何警告。

我的回答是“与什么合并?” 遥控器HEADmaster分公司?还有什么?Git ref 匹配或多或少是无限可配置的。您可以配置多个遥控器。上游跟踪分支机构不需要与本地同行同名。如果您知道如何配置,您甚至可以配置多个上游跟踪分支(这被称为“章鱼”拉动,并且没有瓷器命令可以让您这样做)。

git branch -d检查分支是否尚未与其上游分支合并(远程存储库中不存在的东西),然后,如果不存在上游,HEAD. 对远程存储库的对应检查并不那么明显。

根据 kan 在下面的评论,人们还可以检查删除远程分支是否会生成悬空提交(因此更强大git branch -d)。我也不相信有任何这种类型的保护,并且在具有数十个或数百个分支的远程中验证可能不是一件容易的事情。

您可以做的最好的事情是完全使用receive.denyDeletes.

于 2012-09-07T18:39:17.677 回答
0
于 2012-09-11T06:08:08.593 回答