背景
RT, 我今天眼睛花了,不小心把工作分支【合并】到了一个不相干的功能分支上,并且代码已经推送到远程仓库了。于是,只能尝试还原到上一次提交中。
【合并】分支有一个点我们是不可避免的,文字很难描述,我画图给大家看看吧,如下所示:
大家应该知道会有这个现象吧,看图应该能了解清楚。
而且,由于在开发过程中,多个同事有各自的分支,所以在合并之会有及其错综复杂的分支线,看着都头疼。
解决思路
但是问题还得解决。首先大家知道如果你要还原的话,需要用到哪些命令吗?
我相信大家都百度过,通常你会得到下面这两个命令:
- 重置当前项目代码到某个版本:
git reset --hard [版本id]
- 强制提交上一个版本:
git push origin [branch] --force
没有经验的朋友估计会有点懵,版本id是什么,如何确定?
版本id是什么
对于这个问题我相信大部分人能理解。就是我们每提交一次代码到仓库,为了区分本次提交记录与上一次的区别,肯定需要一个版本号标记的,这个就是版本号。如果你是idea用户,可以看下面这个图,得到当前提交内容的【不完全版本号】:
如下图,则表示,本次我的同事提交的【修改日期格式参数】的【不完全版本号】为:9c948858
(虽然是不完全版本号,但是已经可以用了。版本号前缀有冲突的概率不是很大)
当然,我们还可以获取完整版本号,更简单了。直接对准当前提交记录,右键选择-》Copy Revision Number,也能拿到
如何确定
如何确定这个就是你要回滚的版本,那就是你自己的事情了。但是正如在前面我说的那样,由于多分枝开发势必造成错综复杂的提交记录,所以,最难的有时候反而是寻找这个回滚点的过程。
这里我说一下我是怎么找的,很简单也很取巧。我发现自己推送错误之后叫我同事别更新代码先,让他先把他本地仓库里面的版本号发我,哈哈哈。
执行
既然我已经得到版本号了,我就可以开始执行命令了。
如下:
先执行:git reset --hard 8a837758e2316f260957d658326e82e16c14862c
接着执行:git push origin yzmyd_branch_0824 --force
后面这个--force
是强制推送的意思,没有这个会提示你版本冲突