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
是一款分布式版本控制系统,它提供了许多强大的功能来管理代码的版本和变更。其中之一就是命令,它允许我们选择某个分支上的一个或多个提交,并将它们应用到当前分支上。这个功能非常有用,可以帮助我们在不合并整个分支的情况下,将特定的提交应用到其他分支上。本篇博客将详细介绍命令的使用方法和示例。本篇博客详细介绍了命令的使用方法和示例。通过命令,我们可以选择性地将特定的提交应用到其他分支上,而不需要合并整个分支。这对于合并单个提交、修复bug和提取特定功能非常有用。
解决
冲突
之后重新
git
add xx 将
解决
冲突
的文件再一个一个的添加,然后
git
cherry
-
pic
k --continue,提示成功即可,否则继续
git
diff
解决
冲突
。在分支A上打开
Git
bash,然后
git
checkout B 切换到分支B,然后输入
git
cherry
-
pic
k xxx (前面查看到的提交a的commit
id
)输入
git
status可以查看当前
冲突
的文件, 输入
git
diff,会在代码中生成
冲突
提示,之后根据
冲突
提示开始逐个文件
解决
冲突
。
git
挑选教程
这个 repo 通过提供一个小任务来简单地让你实现这个 tut 的目标,涵盖了一个叫做的
git
命令。
git
cherry
-
pic
k基本上使您能够在 HEAD 所指的当前位置下复制一系列提交。
基本的
git
cherry
-
pic
k 命令
$
git
cherry
-
pic
k commit1 commit2 commit3 ... commitN (1)
每个提交都引用一个 SHA-1 哈希值。 请注意,在命令中只给出哈希值的前七个字符(即ab8s001 )是合理的。
如果您的
cherry
-
pic
k 命令在复制命令中指定的提交之一时失败(例如,发生
冲突
时),您可以使用以下命令稍后继续/退出/中止下一个目标提交。
git
cherry
-
pic
k --continue
git
cherry
-
pic
k --quit
git
cherry
-
pic
k --abort
1)
git
checkout B
2)
git
cherry
-
pic
k -n [A分支中的commit
Id
]
3)
git
status 查看是哪些文件发生
冲突
(红色的为有
冲突
的文件)
4)
解决
冲突
5)
git
add 这些文件(
git
add相当于标记为已
解决
)
6)接下来可以继续
cherry
pic
k下一个需要同步的commit,如若不继续,即可在B分支提交同步
转自:https://blog.csdn.net
git
commit 中的
change
-
id
为什么要使用
change
-
id
保证已经提交审核的修订通过审核入库后,被别的分支
cherry
-
pic
k 后再推送至服务器时不会产生新的重复的评审任务。Gerrit 设计了一套方法,即要求每个提交包含唯一的
Change
-
Id
,这个
Change
-
Id
因为出现在日志中,当执行
cherry
-
pic
k 时也会保持,Gerrit 一旦发现新的提交包含了已经处理