git cherry-pick用于把其他的commit修改应用到当前提交。
git 文档对git cherry-pick的描述:
Apply the changes introduced by some existing commits
就是对已经存在的commit 进行apply (可以理解为再次提交)
一般来说,做cherry-pick的两个提交最好是相邻的。如果中间间隔了几个提交,那么做cherry-pick的时候,哪些间隔的提交是不会被拿过来的。
举例来说:
我现在的提交是: 68138b011d7eefbcc06c82a8577cc3935594910d 。
在此提交之后有两个新的提交:1c81f0129e62d2e79d5f2869c2b547bf17213e87 和 944cc2e483ff6ca86c9973e3cc7758c9030d17f6
我想将这两个新的提交拿过来,操作步骤如下:
(1)拿第一个提交:
[wslu@wslu-cs postgres-xc]$ git cherry-pick 1c81f0129e62d2e79d5f2869c2b547bf17213e87 Automatic cherry-pick failed. After resolving the conflicts, mark the corrected paths with 'git add <paths>' or 'git rm <paths>' and commit the result with: git commit -c 1c81f0129e62d2e79d5f2869c2b547bf17213e87 [wslu@wslu-cs postgres-xc]$ |
表明有冲突了, 接着手动解决冲突。然后执行:
git add xxx1.c xxx2.c #将文件变动添加到索引
git commit --amend #追加到当前提交,即第一个提交。
或者
git commit -c 1c81f0129e62d2e79d5f2869c2b547bf17213e87
(2)拿第二个提交:
操作步骤与第一个提交相同。
至此,完成。