1、背景:
1、wiser绑定的uiidA的定制修改内容和ELKO绑定的uiidB基本是一样的,需要手动粘贴同步,增加测试保障风险,还会浪费开发资源投入;
2、施耐德wiser和elko面板两套面板基本一致,但是经过new art升级后,各自已经出现一些私有的内容(如长期迭代下来导致的定制差异、开发者差异引入的实现差异等等);
3、可以用这俩项目试一下:000001s0t7 / 000001rbys
2、解决预期:
1、项目A、B两套相似的代码分别置于仓库A、B,希望通过修改一套代码A,同时完成仓库A、B的内容更新,且能够正确的将修改内容合并到提交树HEAD中;
3、执行步骤梳理:(wiser uiid1和elko UIID2 ,从wiser uiid1上改,在elko上合并wiser的修改)
1、分别拉取代码wiser和elko:
2、wiser项目中完成需求并提交内容;
3、在elko项目终端中执行:
a.添加wiser的remote地址到elko项目中:
git remote add wiser ssh://git@xxx/uiid1 (wiser 是添加到git config中的别名);
b.拉取最新的wiser代码到elko项目中:
git fetch wiser;
c.基于wiser/develop分支检出一个temp分支到elko项目中:
git checkout -b temp wiser/develop
d.切回到elko项目的最新分支(develop);
e.执行夸仓库合并命令:(允许跨仓库合并:--allow-unrelated-histories )
git merge --no-ff temp --allow-unrelated-histories
f.解决冲突后提交,elko面板同步wiser需求内容完成;
4、特别注意:
a.适用差异较小的两个面板,否则合并的时候冲突会很多;
b.git配置不会被提交,clone的时候,需要重新添加remote地址;
c.本地媒介分支及时清除,不要提交到仓库里面;
d.命令较长,可以结合.gitconfig的alias 一起使用:
open ~/.gitconfig
[alias] 里面贴入如下内容:(没有alias在问价下面加一下)
d.执行一下:source ~/.bash.profile 就好了(不行的话再重启下IDE);
e.执行:
git auh1 ssh://git@xxx/uiid1 (把wiser的仓库地址贴过来)
git auh2
git auh3
git auh4 (不是develop的话全称切一下)
git auh5
auh1 = remote add wiser
auh2 = fetch wiser
auh3 = checkout -b temp wiser/develop
auh4 = checkout develop
auh5 = git merge --no-ff temp --allow-unrelated-histories