我经常修改功能分支,然后强制将它们推送到服务器。
git push --force origin feature-mongodb-support
git push --force origin <current branch>
是否有任何捷径?
答案 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)
答案 5 :(得分:0)
如果您使用oh my zsh,则可以轻松完成
ggfl
这将为您做到
git push --force-with-lease origin <your_argument>/$(current_branch)
答案 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