Git cherry-pick can select one or several commit (s) from one branch to operate. For example, suppose we have a stable version of the branch, called V2.0, and there is a development version of the Branch v3.0, we can not directly merge two branches, which will lead to a stable version of the chaos, but also want to add a v3.0 function to v2.0, where you can use Cherry-pick, In fact, it is to resubmit the existing commit.
Simple usage:
git cherry-pick <commit id>
Note: When the Cherry-pick is finished, a new commit is generated, and the new commit hash value is different from the original, but the identity name is the same;
For example:
$ git Checkout v2.0 branch
$ git cherry-pick 38361a55 # This 38361a55 number, located in the v3.0 branch:
$ git log
Commit 38361a55138140827b31b72f8bbfd88b3705d77a
Author:justin Justin@xxx.com
Date:sat Dec 10 00:11:44 2016 +0800
1. If it goes well, it will be submitted normally. Results:
Finished one cherry-pick.
On Branch v2.0 Branch
Your Branch is ahead of ' ORIGIN/OLD_CC ' by 3 commits.
2. If there is a conflict during the Cherry-pick process
Automatic Cherry-pick failed.
After resolving the "Conflicts,mark" corrected paths with ' git add <paths> ' or ' git rm <paths> ' and commit th E result with:
Git commit-c 15a2b6c61927e5aed6111de89ad9dafba939a90b
Or:
Error:could not apply 0549563 ... Dev
Hint:after resolving the conflicts, mark the corrected paths
Hint:with ' git add <paths> ' or ' git rm <paths> '
Hint:and commit the result with ' git commit '
As with ordinary conflicts, manual resolution:
2.1 $ git status # see which files conflict
Both Modified:app/models/mainactivity.java
2.2 $ vim App/models/mainactivity.java # manually resolve it.
2.3 $ git Add App/models/mainactivity.java
2.4 Git commit-c < new commit number >
2.5 Again Cherry-pick remaining commit
If prompted:
Error:a Cherry-pick or revert is already in progress
Hint:try "Git Cherry-pick" (--continue | --quit | --abort) "
Fatal:cherry-pick failed
The corresponding action is performed:
Git Cherry-pick--continue
Git Cherry-pick--quit
Git Cherry-pick--abort
Command collection: Git cherry-pick <commit id>: Merging a single submit git cherry-pick-x <commit id>: Ibid., different: Keep the original submitter information.
Git starts with the 1.7.2 version to support batch Cherry-pick, which is a commit that can cherry-pick one interval at a time. git Cherry-pick <start-commit-id> <end-commit-id> git Cherry-pick <start-commit-id>^. <end-commit-id>
The former represents the submission Cherry-pick to the current branch between <start-commit-id> to <end-commit-id> (left open and right closed, not including Start-commit-id);
The latter has the representation of the "^" sign to Cherry-pick to the current branch between <start-commit-id> to <end-commit-id> (closed intervals, including Start-commit-id).
where,<start-commit-id> to <end-commit-id> only need the first 6 bits of Commit-id, and <start-commit-id> in time must be earlier than < End-commit-id>
Note: The above merge requires manual push code.
From: http://www.jianshu.com/p/08c3f1804b36