Git从releamergedevelop上的代码,⼜回滚到merge之前的
代码
⼀场⽆⽤功的merge
⼀:背景(开发⼯具Intellij趵突泉导游词
IDE)
项⽬中有develop 和 relea 两个分⽀, 在develop 开发新需求,relea 分⽀是在提测的时候来合并develop代码供测试使⽤,没等到提测时,提前给merge 了。
⼆:使⽤git reflog 查看所有HEAD历史 (操作包含commit(merge)、ret、chekcout、pull、renamed等),部分内容如下:
3444841f HEAD@{25}: ret: moving to 3444841f47251161d65d815cde72d8ffaccd87c7
66afa884 HEAD@{26}: checkout: moving from develop to relea
3444841f HEAD@{27}: ret: moving to 3444841f47251161d65d815cde72d8ffaccd87c7
6b7503b8 (HEAD -> relea-333, recover-branch) HEAD@{28}: checkout: moving from relea to dev
elop
66afa884 HEAD@{29}: merge develop: Merge made by the 'recursive' strategy.
541风光旖旎
b298f HEAD@{30}: checkout: moving from develop to relea
6b7503b8 (HEAD -> relea-333, recover-branch) HEAD@{31}: commit: <E6><A0><B9><E6><8D><AE><E5><AE><A2><E6>
<88><B7><E8><B4><A6><E5><8F><B7><E6><90><9C><E7><B4><A2><E5><AE><A2><E6>
<88><B7><E4><BF><A1><E6><81><AF>
dbe3699e (origin/relea) HEAD@{32}: checkout: moving from relea to develop
541b298f HEAD@{33}: commit: <E6><A0><B9><E6><8D><AE><E5><AE><A2><E6><88&泰国禁忌
gt;<B7><E8><B4><A6><E5><8F><B7><E6> <90><9C><E7><B4><A2><E5><AE><A2><E6><88><B7><E4><BF><A1><E6><81><AF>
ce7397d8 HEAD@{34}: checkout: moving from develop to relea
dbe3699e (origin/relea) HEAD@{35}: checkout: moving from relea to develop
ce7397d8 HEAD@{36}: commit (merge): Merge branch 'develop' into relea
0d055a70 HEAD@{37}: pull --progress --no-stat -v --progress origin relea: Fast-forward
e145813b HEAD@{38}: checkout: moving from develop to relea
dbe3699e (origin/relea) HEAD@{39}: pull --progress --no-stat -v --progress origin develop: Merge made by the 'recursive' strategy.
3abb05ef HEAD@{40}: commit: <E6><A0><B9><E6><8D><AE><E5><AE><A2><E6><88><B7><E8><B4><A6><E5><8F><B7><E6> <90><9C><E7><B4><A2><E5><AE绕口令《玲珑塔》
><A2><E6><88><B7><E4><BF><A1><E6><81><AF>
8b5d7138 HEAD@{41}: pull --progress --no-stat -v -射手天秤
-progress origin develop: Merge made by the 'recursive' strategy.
304d49e1 再来一次
(relea) HEAD@{42}: commit: <E5><BA><97><E9><9D><A2><E9><A2><84><E7><BA><A6><E7><9C><8B><E8>
<BD><A6><E6><8E><A5><E5><8F><A3><E5><BC><80><E5><8F><91>
c001黑米馒头
f23c HEAD@{43}: pull --progress --no-stat -v --p叶黄素的功效
rogress origin develop: Fast-forward
c7bbbed6 HEAD@{44}: checkout: moving from relea to develop
⼆:观察⽇志列表内容,找到这次merge 之前 git log (上⾯内容中绿⾊⾏)。再做如下操作完成代码回滚
(1)基础绿⾊⾏版本创建新的分⽀
git branch recover-branch 0d055a70
(2)切换到新的分⽀上
git checkout recover-branch
(3)在Intellij 查看这个项⽬的git show history内容
发现最近历史记录是这次merge 前的内容。
(4)把原来的relea本地分⽀更改名称,⽽recover-branch 分⽀更改名称为relea
(5) 在新改名relea 分⽀下,做如下操作把本地新代码同步到相应的远程分⽀上
git push origin HEAD --force