How to use the command 'git cherry' (with examples)
Git cherry is a command that allows you to find commits that have yet to be applied upstream. This can be useful for developers who want to keep track of the commits that need to be integrated into the main branch. In this article, we will explore three different use cases of the ‘git cherry’ command.
Use case 1: Show commits (and their messages) with equivalent commits upstream
Code:
git cherry -v
Motivation:
The motivation behind using this command is to view the commits that have been made in the local branch but have not yet been applied upstream. This can be useful for developers who want to keep track of their work and ensure that all their commits are properly integrated into the main branch.
Explanation:
The ‘-v’ flag in the command stands for ‘verbose’. When using this flag, the ‘git cherry’ command will display the commits and their messages that have not been applied upstream. The command will compare the local branch commits with the upstream branch to identify the unmatched commits.
Example output:
+ 0123456789abcdef0123456789abcdef01234567 Example commit message
- abcdef0123456789abcdef0123456789abcdef01 Another example commit message
+ abcdef0123456789abcdef0123456789abcdef01 Yet another example commit message
In this example output, the ‘+’ sign indicates the commit that has not been applied upstream, while the ‘-’ sign indicates the commit that already exists in the upstream branch.
Use case 2: Specify a different upstream and topic branch
Code:
git cherry origin topic
Motivation:
Sometimes, you may be working on a branch other than the default ‘master’ branch. In such cases, you may want to compare your local branch’s commits with a different upstream branch. This can be useful when you need to track the commits that are specific to your branch and have not been applied upstream.
Explanation:
In this use case, the ‘git cherry’ command is used to compare the commits in the local ’topic’ branch with the commits in the ‘origin’ upstream branch. By specifying the upstream and topic branch, you can obtain a list of commits that have not been applied upstream in the specified branches.
Example output:
+ 0123456789abcdef0123456789abcdef01234567 Example commit message
- abcdef0123456789abcdef0123456789abcdef01 Another example commit message
+ abcdef0123456789abcdef0123456789abcdef01 Yet another example commit message
Similar to the previous example, the ‘+’ sign indicates the commit that has not been applied upstream, and the ‘-’ sign indicates the commit that already exists in the upstream branch.
Use case 3: Limit commits to those within a given limit
Code:
git cherry origin topic base
Motivation:
In larger projects with multiple branches and many commits, it can be overwhelming to see the complete list of commits that have not been applied upstream. By limiting the number of commits to a specific range, developers can focus on a particular set of commits and identify the ones that need to be integrated.
Explanation:
In this use case, the ‘git cherry’ command is used to compare the commits in the ’topic’ branch with the commits in the ‘origin’ upstream branch, limited to those within the range of ‘base’. The ‘base’ commit is the commit preceding the oldest commit you want to consider.
Example output:
+ abcdef0123456789abcdef0123456789abcdef01 Yet another example commit message
In this example, only one commit is shown because the range has been limited to ‘base’, meaning that the ‘git cherry’ command will only compare the commits after ‘base’ in the local ’topic’ branch and check if they have been applied upstream.
Conclusion:
The ‘git cherry’ command is a helpful tool for developers to keep track of commits that have not been applied upstream. By using this command with different arguments, developers can view the unmatched commits, specify different upstream and topic branches, and limit the commits to a given range. This can greatly aid in ensuring that all commits are properly integrated into the main branch of a project.