原文 http://sg552.iteye.com/blog/1300713
实际问题: 在本地 master 分支上做了一个commit ( 38361a68138140827b31b72f8bbfd88b3705d77a ) , 如何把它放到 本地 old_cc 分支上? 办法之一: 使用 cherry-pick. 根据git 文档:
Apply the changes introduced by some existing commits就是对已经存在的commit 进行apply (可以理解为再次提交)简单用法:
git cherry-pick <commit id>例如:$ git checkout old_cc$ git cherry-pick 38361a68 # 这个 38361a68 号码,位于:
$ git logcommit 38361a68138140827b31b72f8bbfd88b3705d77a Author: Siwei Shen <siwei.shen@focusbeijing.com>Date: Sat Dec 10 00:09:44 2011 +08001. 如果顺利,就会正常提交。结果:
Finished one cherry-pick.# On branch old_cc# Your branch is ahead of 'origin/old_cc' by 3 commits.2. 如果在cherry-pick 的过程中出现了冲突
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 15a2b6c61927e5aed6718de89ad9dafba939a90b就跟普通的冲突一样,手工解决:2.1 $ git status # 看哪些文件出现冲突
both modified: app/models/user.rb2.2 $ vim app/models/user.rb # 手动解决它。 2.3 $ git add app/models/user.rb2.4 git commit -c <新的commit号码>
其他问题解决方案
If you receive an error of
fatal: bad revision
when trying tocherry-pick
commits from a pull request ingit
you are PRobably missing a reference toupstream
.To
cherry-pick
commits in a pull request:BASH CODE git checkout -b otherrepo-master mastergit remote add upstream git://github.com/otherrepo/whatever.gitgit fetch upstreamgit checkout master# find the hash on the pull requestgit cherry-pick abc0123git loggit branch -D otherrepo-mastergit push origin master
新闻热点
疑难解答