1.大家都知道不同分支间的commit,可以使用git cherry-pick命令来获得其它分支上的提交。一般情况不出问题的话,我们点击cherry-pick复制链接之后。
在我们本地仓库直接使用我们刚才复制的链接,就可以cherry-pick成功。但是加入我们cherry-pick失败了呢。这里我们就来分析解决失败的情况。
错误情景
冲突代码(cherry pick后)
hal3/Camera3Stream.cpp \
1.<<<<<<< HEAD //表示我们cherry pick过来的代码的HEAD在这里,即代码修改起始位置。
# hal1.0/src/CameraHardwareInterface.cpp
2.=======
5.hal3/Camera3Flash.cpp \ //这之间就是冲突点,之前就是在CameraHardwareInterface.cpp前面加了CameraHardwareInterface.cpp文件
3.hal1.0/src/CameraHardwareInterface.cpp
4.>>>>>>> 9fc22d0... Bug #534024 - [APPS_TJ][客户需求]
endif
这里为了解决冲突,我们把1.2.3.4行删除掉,把5处放到1标号位置。然后
git add .
git commit
这个时候我们会发现会出现下面红色的字样,这是由于我们cherry-pick过来时候i,由于有冲突,保存的历史记录。
================================================
[tag_product ] common
Conflicts:
Camera.mk
hal3/Camera3Hal.cpp
Change-Id: I5bef49017323f041857d5498939a9d4d6992d4e0
================================================假如我们不去掉Conflicts,那么我们在git push的时候,会出现下面这个问题(将然有两个change-id)
remote: [tag_product ] common
remote:
remote: Change-Id: Id4c396b9d8d9607af7cd69df76da547e51193ab7
remote:
remote: Conflicts:
remote:
remote: Camera.mk
remote: hal3/Camera3Hal.cpp
remote:
remote: Change-Id: I5bef49017323f041857d5498939a9d4d6992d4e0
删除掉Conflicts字样,重新git push,这样我们就可以保留之前的change-id,不用重新生成一个change-id.