git cherry-pick冲突解决

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.


你可能感兴趣的:(git常用技巧)