- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Git 默认拒绝删除本地分支(通过 git branch -d mybranch
),如果该分支没有完全 merge 。
但是,如果我通过 git push origin --delete mybranch
删除远程分支,如果分支没有完全 merge ,则不会有任何警告。
这似乎相当危险:自从我上次获取分支以来,其他人可能已经将更新推送到该分支,因此与本地分支相比,远程分支意外删除未 merge 分支的可能性更大。
那么,如果我删除远程未 merge 的分支,为什么 git 不发出警告?有没有办法让它警告或拒绝删除?
注意:我意识到理想情况下我应该在删除分支之前git pull
分支,并确保它完全 merge 。然而,每个人都会犯错,我希望有一个安全网。
最佳答案
However, if I delete a remote branch via git push origin --delete mybranch, there is no warning whatsoever if the branch is not fully merged.
我的回答是“与什么 merge ?” Remote 的 HEAD
? master
分支?还有别的吗? Git 引用匹配或多或少是可无限配置的。您可以配置多个 Remote 。上游跟踪分支机构不需要与其本地分支机构同名。如果您知道如何操作,您甚至可以配置多个 上游跟踪分支(这称为“ Octopus ” pull ,并且没有允许您执行此操作的瓷器命令)。
git branch -d
检查分支没有与其上游分支 merge (远程存储库中不存在的东西)然后,如果上游不存在,头
。对远程存储库的对应检查并不那么明显。
根据 kan 在下面的评论,人们可能还会检查删除远程分支是否会生成悬空提交(因此更强大的 git branch -d
)。我也不相信有任何这种类型的保护,并且在具有数十个或数百个分支机构的远程验证可能不是一件容易的事情。
您能做的最好的事情就是使用 receive.denyDeletes
完全防止删除。
关于Git:拒绝通过推送删除远程分支(如 receive.denyDeletes),但前提是分支未完全 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12321277/
我是一名优秀的程序员,十分优秀!