43

我经常 rebase 功能分支,然后想强制将它们推送到服务器。

git push --force origin feature-mongodb-support

有什么捷径git push --force origin <current branch>吗?

4

7 回答 7

30

您可以使用别名来缩短命令。像这样使用它:

git config --global alias.fpush "push --force origin"

现在推送你的分支只需输入:

git fpush feature-mongodb-support

或者您甚至可以将分支名称硬编码到命令中:

git alias fpush "push --force origin feature-mongodb-support"

并且仅git fpush用于将您的宝贵工作推入上游。

但是,非快进更新是危险的,因为您基本上会覆盖服务器上在最后一次合并/变基到本地分支和强制推送之间发生的所有历史记录。如果您需要经常这样做,那么您的工作流程肯定有问题

于 2012-07-12T14:25:41.290 回答
8

在阅读了这些答案并阅读了相关问题的答案(https://stackoverflow.com/a/18782415/586)之后,我创建了这个别名以origin根据当前分支名称强制推送:

fp = "!git push -f origin \"$(git rev-parse --abbrev-ref HEAD)\""
于 2014-05-14T23:00:26.720 回答
6

您可以通过设置push.default属性来更改默认行为:

git config --global push.default current

然后:

git push -f

将强制推送到您当前的分支。

这是来自http://schacon.github.io/git/git-config.html的复制/粘贴:

push.default

定义如果命令行上没有给出 refspec,远程中没有配置 refspec,并且命令行上给出的任何选项都没有暗示 refspec,则 git push 应该采取的操作。可能的值为:

  • 什么- 不要推动任何东西。

  • 匹配- 推送所有匹配的分支。在两端具有相同名称的所有分支都被认为是匹配的。这是默认设置。

  • upstream - 将当前分支推送到其上游分支。

  • tracking - 不推荐使用的上游同义词。

  • current - 将当前分支推送到同名分支。

于 2020-05-18T07:45:15.557 回答
3

如果你使用oh my zsh你可以简单地做

ggfl

这将为你做这件事

git push --force-with-lease origin <your_argument>/$(current_branch)

https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet

于 2018-10-25T09:34:19.450 回答
1

这应该可以解决问题:

git alias fpush "push --force origin"

这将使您可以将git fpush其用作较短的替代方案。

于 2012-07-12T14:21:16.980 回答
0

为了自动强制推送到被跟踪的分支(不管它的名字和上游),我设计了这个别名:

fbrpush=!git push $(git rev-parse --abbrev-ref=loose --symbolic-full-name @{upstream} \
                    | sed 's:/: +:')

(为了便于阅读,换行)

(基于另一个 SO 答案

于 2018-10-02T18:38:46.980 回答
0

当前分支名称也可以自动推断。

我使用一个小的 shell 脚本来强制推送到当前分支:

git branch | grep '*' | awk '{print $2}' | xargs -I % git push origin % -f

该命令git branch用符号标记当前分支*,因此我们可以获取相关行grep '*'并对其进行解析以获取分支名称。

然后可以将快捷命令定义为.bashrcor中的别名.zshrc

alias gfp=/path/to/script
于 2020-10-20T08:55:49.660 回答