Chapters ▾ 2nd Edition

A3.8 Git Commands - Patching


A few commands in Git are centered around the concept of thinking of commits in terms of the changes they introduce, as thought the commit series is a series of patches. These commands help you manage your branches in this manner.

git cherry-pick

The git 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 in “Gestion par rebasage et sélection de commit.

git rebase

The git rebase command is basically an automated cherry-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 in “Rebaser (Rebasing)”, 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 seperate repositories in “Replace”, using the --onto flag as well.

We go through running into a merge conflict during rebasing in “Rerere”.

We also use it in an interactive scripting mode with the -i option in “Modifier plusieurs messages de validation”.

git revert

The git revert command is essentially a reverse git 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 in “Inverser le commit to undo a merge commit.