关于git远程被覆盖的问题

有同事A和B,git远程版本为A0,两个人的本地项目已经跟远程同步。同事A先向git提交了3次,A1、A2、A3。git远程版本为A0、A1、A2、A3。同事B也向git提交了1次B1,但是同事B提交项目时忘了先拉取pull,再推送push,导致同事A的提交被覆盖。此时git远程版本变成A0、B1。怎么办呢?

git提供了一个方法叫版本回退。

git reset --hard xxxxx     //xxxxxx表示git的版本号

首先确保我们有master权限,我们现在想回退到A3这个版本,假定A3的版本号为c12345。打开Git Bash,输入

git reset --hard c12345

继续输入git log,查看当前版本,可以看到,版本已经回退到A3这个版本。但是这仅仅是本地项目回退了,我们需要本地远程同步,进行强制推送,继续输入

git push -f

这时候大部分会报你没有权限推送之类的信息,这是因为这项目是受保护的。要想强制推送,必须先解除保护。打开git远程项目界面,选择“setting”-"repository"。’下拉到以下界面,点击“Unprotect”,解除对项目的保护。再重新git push -f即可。强制推送后,应该把该项目重新设置为保护状态。

 

 

至此,版本回退完成。同事B再次提交即可。

 

posted @ 2019-09-17 10:10  一棵写代码的柳树  阅读(4579)  评论(0编辑  收藏  举报