最近遇到了一个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
所造成的灾难。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。