A few commands in Git are centered around the concept of thinking of commits in terms of the changes they introduce, as though the commit series is a series of patches.These commands help you manage your branches in this manner.
Thegit cherry-pick command is used to take the change introduced in a single Git commit and try to re-introduce it as a new commit on the branch you’re currently on.This can be useful to only take one or two commits from a branch individually rather than merging in the branch which takes all the changes.
Cherry picking is described and demonstrated inRebasing and Cherry-Picking Workflows.
Thegit rebase command is basically an automatedcherry-pick.It determines a series of commits and then cherry-picks them one by one in the same order somewhere else.
Rebasing is covered in detail inRebasing, including covering the collaborative issues involved with rebasing branches that are already public.
We use it in practice during an example of splitting your history into two separate repositories inReplace, using the--onto flag as well.
We go through running into a merge conflict during rebasing inRerere.
We also use it in an interactive scripting mode with the-i option inChanging Multiple Commit Messages.
Thegit revert command is essentially a reversegit cherry-pick.It creates a new commit that applies the exact opposite of the change introduced in the commit you’re targeting, essentially undoing or reverting it.
We use this inReverse the commit to undo a merge commit.