强制推动当前分支

时间:2012-07-12 14:15:08

标签: git git-push git-alias

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

git push --force origin feature-mongodb-support

git push --force origin <current branch>是否有任何捷径?

7 个答案:

答案 0 :(得分:27)

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

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

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

git fpush feature-mongodb-support

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

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

并仅使用git fpush将您宝贵的工作推向上游。

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

答案 1 :(得分:6)

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

fp = "!git push -f origin \"$(git rev-parse --abbrev-ref HEAD)\""

答案 2 :(得分:4)

您可以通过设置 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应当采取的操作。 可能的值为:

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

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

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

  • 跟踪-已弃用的上游同义词。

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

答案 3 :(得分:2)

这应该可以解决问题:

git alias fpush "push --force origin"

这将允许您使用git fpush作为更短的替代方案。

答案 4 :(得分:0)

要自动强制将其推入要跟踪的分支(无论其名称和上游),我设计了这个别名:

this.state.data.map

(为便于阅读,行已断开)

(基于another SO answer

答案 5 :(得分:0)

如果您使用oh my zsh,则可以轻松完成

ggfl

这将为您做到

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

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

答案 6 :(得分:0)

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

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

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

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

然后可以在.bashrc.zshrc中将快捷方式命令定义为别名:

alias gfp=/path/to/script