背景

有时候,咱们的分支合并了他人的有问题代码的分支,为了不被问题代码影响进度,须要给本人没有问题的代码从新拉一个分支

操作

找到本人这个分支最早的提交日期,用git log命令找到这个日期之后所有的本人的提交,剔除所有合并提交(Merge Commit),并且逆序保留到文件里。

git log --since={first_commit_date} --reverse --author={your_name} --no-merges --pretty=%H {your_branch} > commits.txt

从master拉一个新分支,用git cherry-pick把commit全副合并到新分支上

git cherry-pick `cat commits.txt`

异样QA

The previous cherry-pick is now empty, possibly due to conflict resolution.

阐明以后的commit脱漏了前置的commit,没有这个commit后续的都合并不了,须要排查下是否脱漏了他人的或者这个日期之前的commit。也可能是你在合并提交里手动批改了代码,这个合并提交也须要合并进来,这时候会报上面的谬误

error: commit {id} is a merge but no -m option was given.

阐明git log找到的commit里有合并提交,cherry-pick不晓得合并合并哪个的,须要指定选项-m,要哪个分支的代码参数就是几