git cherry-pick git diff repo sync

git cherry-pick conflict:
这里写图片描述
just do like this:
1.git status
git cherry-pick git diff repo sync_第1张图片
2.find the files which are both modified.
3.edit and solve the conflict one file by one file.
4.git add the files you have just modified in step 3.
5.git cherry-pick --continue//注意是 两个-
OK. Make it!

接着写看看git submodule和repo sync失败的问题:
通常为了分布式开发工程,使用repo和git集群管理,repo管理工程,git管理各个主模块和子模块,子模块的remote仓库极有可能是分离的。在使用中会遇到一些奇怪的问题,比如:repo sync失败
git cherry-pick git diff repo sync_第2张图片
说是有改动没有commit。就是用git diff一看

git diff出现submodule的diff:
在这里插入图片描述
就是这种改动,我发誓,这不是我干的,我没有改动这个库。
当然啦,我不是配置管理人员,我真不懂里面的原理,但是我猜测估计是这个子模块的代码其实是repo sync过程中从对应的远端仓库git pull的,有新增,然后index内容就与repo sync时保存的内容不一样了(具体这个index是干啥的我真不想去研究)。
解决办法:
git rm --cached ambalink_sdk_3_10/yuneec/ync_WCCS
然后git diff,这个diff就消失了。

但是repo sync 还是失败,现象跟上面repo sync失败一样。

也就是说,虽然git diff看不见diff了,但是还是没有commit,上一步git rm --cached之后接上git commit随便加上点commit info就可以区repo sync了,sync会把所有submodule同步远仓库,但有个讨厌的地方就是,我们commit的东西没有被覆盖,需要reset回去。reset回去之后git diff 又会出现上文中submodule 的diff。

这个解决了同步不下来的问题,但治标不治本,有空再继续研究吧。

如果哪位大神在行,跪求指导。

你可能感兴趣的:(ubuntu,repo,sync,git,diff,git,cherry-pick)