git push -f 实战使用
Git Push
git 常用命令流程图如下:
git push命令用于将本地分支的更新,推送到远程主机。
$ git push <远程主机名> <本地分支名>:<远程分支名>
git push origin lhf/dev/1.0
如果省略远程分支名
,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建。
$ git push origin master
上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。
git push
是把本地的所有分支内容 推送到 匹配的远程分支
Git Push -f
一种情况
在 springboot 微服务项目
中,我在更新一个模块的接口
,改好后,git commit,git push 到远程分支
,打包部署到服务器,但是验证出了 bug
,这时候就要改动刚写的接口
,改完后,为了避免出现太多的commit
,会在本地合并 又修改后的提交记录到之前的提交
,但是合并之后,就会和远程的分支commit记录产生冲突
,这时候git push 是会报错的
,必须使用git push -f 强制覆盖掉远程分支的内容
如果远程主机的版本比本地版本更新,推送时Git会报错
要求先在本地做git pull合并差异
,然后再推送到远程主机
。这是正常合理的代码提交流程。
如果你一定要推送,可以使用–force选项。
注意
使用–force选项,导致远程主机上更新的版本被覆盖。
如果没有指定 强制push的 分支,可能会把所有的本地分支强制覆盖远程分支,同事之前推送的代码会被你抹掉。
如果大家都不小心更新你的版本,OMG,前功尽弃。 除非你很确定要这样做,否则应该尽量避免使用–force选项。
在 idea 的 terminal 中 git push 是把当前所在的分支,推送到远程分支
在 a 分支也可以 git push origin b 将本地的 b 分支 推送到 远程 b 分支
安全的使用 –force 选项
只给自己用,要坑就坑自己
在工作的时候,通常会开一个分支出去做
,但做完发现Commit 太过琐碎
,便会想使用Rebase 来整理一下这个分支
。虽然Rebase 是修改历史
没错,但因为这个历史影响的范围只有我自己这个分支
,所以并不会影响其它人正常使用:
$ git push origin features/my_branch -f
只把当前分支强制推送到远程分支
这样只会强制更新features/my_branch这个分支的内容,不会影响其它分支。
点击操作 idea 中 git
可以选择把确定的分支
,push 或者 push -f
设置保护机制
但总是有人可能不小心使用了-f参数来Push,GitHub网站有提供保护机制
,可以避免某个分支被Force Push。请到仓库的「Settings」页签,左边选择「Branches」,添加保护的规则
;
同样,码云gitee.com等有也有样的设置(不过要付费企业项目);
不推荐
可以把远程的分支先删掉,然后本地改好后,推送到远程分支
今天的文章git push -f 慎用分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/8614.html