1、前言
git环境:一个测试的test分支,一个线上的master分支
写新功能步骤:
1、写新功能的时候是从master分支,新建一个分支出来
2、写完功能会提交并push当前的分支到远端
3、测试时,切换到test分支,将功能分支合并到test分支
4、上线时,切换到master分支,将功能分支合并到master分支,上线功能
正常流程如上线所说,但是有时会新建分支时,会用错分支,不是从master分支里面新建出来,而是从test分支新建出来,这时是感知不到的,只有等到上线的时候,合并功能分支到master时,push时,发现很多其他提交也要被push和一些Merge branch 'xxxx分支' into test
的合并提交,此时肯定是用错了分支创建功能分支。
2、如何解决
先查看案例:
案例git:https://gitee.com/1099764422/recommit-demo
想要截图那个效果,需要将function_3_from_test分支合并到master,并且解决冲突,接着push时的截图,发现了Merge branch 'function_2' into test
,说明用错了git分支写function3。
解决方法是:去到function3分支,将每次提交的代码缓存,接着再从master打出分支,在新分支将每次缓存的代码按提交顺序从头到尾依次应用,就还原了,还原后用新分支的代码合并到master即可。
3、详细步骤
以下步骤都是idea中操作,所以是idea里面步骤
3.1、回退代码
切换到function_3_from_test分支
1、确保分支已经推送到remote
2、选中function3提交1
右键选择Reset Current Branch to Here
3、选择hard模式(选择这个模式是因为其他模式不知道为什么会带出很多不知名的提交出来)
4、点击reset按钮,完成操作
5、选中function3提交1
右键选择Undo Commmit...
,点击ok,完成代码恢复到本地
6、去到Local changes的tab,找到恢复的代码的ChangeList
7、copy提交的备注,右键选择Shelve Changes,将提交的备注写入,点击commit,完成一次代码缓存
8、ctrl+t
快捷键update分支代码,从remote将reset操作重置为有全部提交的状态
9、找到下一个提交重复以上步骤
多次提交则重复操作即可
代码缓存下来了
3.2、应用回退代码
从master打出一个function_3
分支
1、去到Shelf页面,选择第一个提交
2、右键Unshelf,此时有可能会有冲突,解决冲突,接着apply
3、去到Local Changes页面,右键恢复的change List,点击Commit File..
,提交代码
4、重复以上步骤即可
3.3、后记
上面步骤是界面操作,命令行的命令自己找了,git自带也有一个stash完成界面的缓存代码的操作的。界面是英文的,用中文的找到对应的中文选项即可