`git push --force-with-lease` 的短标志?

Posted

技术标签:

【中文标题】`git push --force-with-lease` 的短标志?【英文标题】:Short flag for `git push --force-with-lease`? 【发布时间】:2021-01-22 17:52:34 【问题描述】:

在大多数情况下,我已经开始使用git push --force-with-lease 而不是--force 来提供额外的分支保护:

git push --force-with-lease vs. --force

我什至可以尝试将此选项设置为默认选项,如下所述:

push --force-with-lease by default

虽然使用--force-with-lease 的主要烦恼是输入该标志的尴尬措辞和冗长的语法。

Git 的 --force-f 标志更短且更易于键入,但不提供额外的安全性。


是否有--force-with-lease 的缩写形式,例如--fwl

如果没有,是否有没有添加的原因?一个更方便的标志似乎会增加对更安全功能的采用。 git 的创建者是否讨论过这个问题?

如果默认不存在这样的标志,我如何在自己的机器上创建这样的标志或别名?

【问题讨论】:

为什么很难为此创建一个 git 别名? 你实际上只需要输入 --force- [tab]。 @TTT 至少在我大部分默认的 Mac 上,它实际上并没有自动完成 git 命令。显然需要更多设置:***.com/questions/14970728/… @pkamb 啊。我建议花时间让它工作。我想说,如果你这样做(假设你经常使用命令行),你的工作效率会大大提高。不仅用于 --force-with-lease,还用于分支名称完成,以及许多其他你可能不使用的选项已记住(--first-parent、--set-upstream-to 等)。准备好双标签以查看命令的所有选项非常好。我经常使用它,以至于当我发现自己在没有它的终端中时,我感到畏缩。 :) 如前所述,它没有简称,但我认为-f 应该 是这个的简称,而不是简单的--force .不幸的是,Git 在这里陷入了向后兼容性的泥潭。添加--fwl--safeforce 或类似的内容可能是个好主意(尽管“安全部队”可能夸大了这个概念,因为它可以仍然不安全地使用)。 【参考方案1】:

该选项没有简写。对于make a global alias,只需将其添加到~/.gitconfig

[alias]
        push-fwl = git push --force-with-lease

你会在哪里使用别名 -> git push-fwl

当然,您可以随意命名push-fwl

至于文档,我认为这个特定选项没有有简写的原因是因为它的使用复杂。请记住,有很多方法可以拨打--force-with-lease

取自文档:

--[no-]force-with-lease、--force-with-lease=、--force-with-lease=:

这意味着它是我们希望如何使用此选项的每次使用的基础。我会假设维护人员无法知道所有这些选项中哪个最受欢迎,以便对其进行速记。

更不用说--force 是一个更广为人知、更常用的选项,因此有一个简写形式是有意义的。

文档继续进一步告诉我们,对于所有这些选项,我们可能会如何进入不同的情况:

--force-with-lease 单独,不指定详细信息,将通过要求它们的当前值与我们为它们拥有的远程跟踪分支相同来保护所有将要更新的远程引用。

--force-with-lease=,不指定期望值,将保护命名的 ref(单独),如果它要被更新,通过要求它的当前值与远程相同-我们有跟踪分支 为它。

--force-with-lease=: 将保护命名的 ref(单独),如果它要被更新,通过要求它的当前值与指定的值相同(这允许不同 来自我们为 refname 拥有的远程跟踪分支,或者当使用这种形式时,我们甚至不必拥有这样的远程跟踪分支)。如果是空字符串,则命名的 ref 一定不存在。

请注意,除了 --force-with-lease=: 之外的所有明确指定 ref 的预期当前值的形式仍处于试验阶段,随着我们获得经验,它们的语义可能会发生变化 功能。

鉴于您可以创建别名,我认为 git 的维护者没有充分的理由为相对晦涩的命令选项提供简写。

【讨论】:

以上是关于`git push --force-with-lease` 的短标志?的主要内容,如果未能解决你的问题,请参考以下文章

git 遇到的无法成功push的问题

git push出现403错误怎么办

git push每次都要身份验证,如何解决?

个人git项目,push后报错

关于git gerrit的客户端push问题

git push 代码 报没有权限的错误 的解决方法之一