最近遇到了一个 Git Push 相干的问题,共事不小心把一些错误代码提交到仓库了。
如果每个人间接更新的话,会导致错误代码也更新到本地了。
这个时候想要防止这种状况的产生,惟一能够做的就是将那些错误代码间接笼罩掉。
git push -f
git push -f
这个命令的作用是将本人本地仓库的代码间接推送至仓库,齐全以你的提交为准,之前其他人的提交都会被笼罩。
那么这么可怕的命令,到底在什么状况下才实用呢?
应用机会
有两种状况下适宜应用这个命令:
- 确定须要覆笼罩提交,就像下面的那种状况,在明确局部提交会导致异样时,能够应用新的提交去笼罩。
- 须要整顿历史提交记录时,有时候我的项目的 Commit Logs 可能比拟乱,不能清晰的看出每一次提交的作用,能够应用
rebase
命令来清理历史提交记录。因为扭转了历史,所以失常来说是push
不胜利的,所以须要应用force push
来解决这个问题。
默认分支爱护
因为可能会呈现不小心应用的状况,Github
、Gitlab
这类源码托管网站会提供分支爱护机制。能够防止某个分支被 force push
,默认是 master
为爱护分支。
这里以 Gitlab
为例,设置 -> 仓库 ->Protected Branches
:
所以如果想强制提交,前提须要勾销对该分支的爱护。
万一本人的代码被笼罩掉了,还救得回来吗?
其实也是有方法的,那就是换你或是其它有之前提交的共事,再次进行 git push -f
,将正确的内容强制提交下来,笼罩上一次 git push -f
所造成的劫难。
参考链接
聽說 git push -f 這個指令很可怕,什麼情況能够应用它呢?