git push -f什么意思

文章2021-12-28303 人已阅来源:网络

git push -f什么意思

如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这是正常合理的代码提交流程。 这时,如果你一定要推送,可以使用--force选项。

$ git push --force origin

上面命令使用--force选项,结果导致远程主机上更新的版本被覆盖。同事之前推送的代码会被你抹掉,他可能刚刚提交了一整个功能模块的代码,也许是一周的工作量。如果大家都不小心更新你的版本,OMG,前功尽弃。 除非你很确定要这样做,否则应该尽量避免使用--force选项。

怎么样避免使用 –force 选项?

1,只给自己用,要坑就坑自己。

我自己在工作的时候,通常会开一个分支出去做,但做完发现Commit 太过琐碎,便会想使用Rebase 来整理一下这个分支。虽然Rebase 是修改历史没错,但因为这个历史影响的范围只有我自己这个分支,所以并不会影响其它人正常使用:

$ git push -f origin features/my_branch

这样只会强制更新features/my_branch这个分支的内容,不会影响其它分支。

2,设置保护机制

但总是有人可能不小心使用了-f参数来Push,GitHub网站有提供保护机制,可以避免某个分支被Force Push。请到仓库的「Settings」页签,左边选择「Branches」,添加保护的规则;

同样,码云gitee.com等有也有样的设置(不过要付费企业项目);