Git:merge合并、冲突解决、强行回退的终极解决方案
首先还是得避免冲突的发生,无法避免时再去解决冲突,避免冲突方法:
- 时常做pull、fatch操作,不要让自己本地仓库落后太多版本;
- 在分支操作,如切换分支、合并分支、拉取分支前,及时清理Change,保持自己分支洁净;
- 在合并分支时,先拉取后合并,最好是切换到要合并的分支,拉取代码,再切回自己的分支拉取合并分支的代码;
- 对于不确定的分支,在操作前,先比较分支的差异,做到心里有数;
- 合并代码,慎重使用Cherry-Pick,可能会出现冲突;
1、合并处理
方法一:git网址上提交合并请求
方法二:idea 操作 merge
操作原理:当前分支一定是目标分支,一定到检出到目标分支
目标分支:就是合入的远程总分支:如dev、master)
源分支: 就是你自己的开发分支
idea 的 merge 操作页面如下:
2、冲突解决方案
如果不想解决,点Cancel
,后面可以在分支上选择Resolve Conflicts...
(继续解决),或者点Abort Merge
(放弃合并)
Abort Merge:放弃合并,Abort,夭折的意思;
Resolve Conflicts…:解决冲突;
如果是Cherry-Pick出现的冲突,在下拉列表最下面,会有Abort Cherry-Pick
的选项
手动处理冲突的时候,需要看清楚左右两边的内容准确合入中间的最终结果中,不要冲掉远程的内容代码
3、回退已经merge后的代码
这里的回退代码提交有两种情况:
- 回退合并之后并未push
- 回退合并之后并push(也就是强行回退)
3.1、回退合并之后并未push
这种情况比较好处理了就,找到git合并记录,通过reset-hard回退(hard是强回退,不保留本地的回退记录,这时你就要保证要回退的内容在自己的开发分支上是已经push过的,这样就不会丢失reset-hard的代码)
操作reset之后,本地的合并记录就清理了,然后重新合并处理
3.2、回退合并之后并push(也就是强行回退)
第一步先操作这一步:git reset hard
第二步:执行 git push force
通过命令执行,强行退回更新分支
至此,你合并并push的代码被强行回退,但是在你的开发分支还是有你的回退之前的代码的,重新提交合并请求即可!
4、Git cherry-pick 功能
Git:cherry-pick 的功能介绍及使用流程 >>点击查看....