之前一直在master分支开发,后期folk了一个dev分支,然后就一直在dev分支上开发,开发了很多东西,增/删/改
等等,dev和master的内容已经有了很大不同,其实已经是两套工程代码了,比如master是通用版本,dev是针对某用户专门定制的版本:master和dev都有各自独有的内容,也有公共部分,公共部分以dev为准
。
现在想把dev上公共部分修改的内容合并到master上,但是感觉肯定不能直接merge,冲突太复杂了。
我现在想以dev分支为基础,folk出一个dev2分支,在dev2中,首先删除掉dev独有的内容,然后把master上独有的内容以及有修改的一些内容手动拷过来。如果这样做,怎么样diff两个分支改比较方便呢?或者有其他更便利的做法吗?
PS:使用的编辑器是vscode
不建议使用拷贝代码的方式,血泪的教训,会非常容易出错。
建议方法是使用
cherry-pick
。如果你通用性的代码和定制的代码在提交时候就有意的分开在不同的commit里,那么使用
cherry-pick
的方法会非常容易。如果没有的话也没有关系,在cherry-pick
过程中去将无需改动的部分拷贝回来就行。总的过程就是在master分支上把dev分支的这些commit使用
git cherry-pick $commit_id
一个一个的放到master分支里。有几种情况:
git cherry-pick
就行了。git reset HEAD~1
,手动修改一下去掉那些定制的代码,然后git add; git commit
正常的提交commit。git reset HEAD~1
,手动修改一下去掉那些定制的代码,然后git add; git commit
正常的提交commit。其中处理冲突的过程为:
git add
git cherry-pick --continue
(注意不是git commit
)cherry-pick
之后又觉得此commit完全不需要,则可以git cherry-pick --abort