Rebase to a specific commit in Git
This article discusses the process of rebasing to a specific commit in Git. We will use a few scenarios to illustrate how this can be achieved.
We'll use git rebase --onto
the rebase command to rebase a branch to a specific commit. Let's jump right in.
Rebase to a specific commit in Git
When we need to rebase one branch onto another and specify a commit, we use the --onto flag.
Basic syntax:
$ git rebase –onto <new-parent> <old-parent> <head-of-new-parent>
Let's look at an example scenario.
This is the basic workflow we will use:
Rebase the new feature to a specific commit in main
In our first scenario, let's assume that we want to use a single commit in main, rather than rebase the entire branch. This will require us to pay attention to the SHA-1 of the commit that is in play.
We can use git log <branch-name>
to get the hash of the commit.
In our case, we want to move the commits in our new feature branch to the master branch at commit 846e2fa (the second to last). We would run the following:
$ git rebase –onto 846e2fa bd9172c
The above command will produce the following result:
Since we want to move the entire new feature, we don’t need the third argument in our command. If you omit the third argument, Git defaults to moving the entire branch.
Rebase new-feature to a specific commit in main and remove the first commit in new-feature
Let's say our e2ff2bc is a dependency and we want to move our branch to main at commit 846e2fa, which is the same dependency we have. In plain English, we want to rebase new-feature onto main at 846e2fa and omit the first commit in new-feature.
Here’s how we do it:
$ git rebase –onto 846e2fa e2ff2bc
The above command will produce the following result:
The git rebase -onto command takes the parent commit as a reference. In simple terms, we should reference the commit before the commit we want to save.
Rebase new-feature to a specific commit in main and remove the last commit in new-feature
Suppose we want to move new-feature to 846e2fa but omit commit d7dbeb from new-feature. How would we go about this?
This is where the third parameter comes in. We will run the following command:
$ git rebase –onto 846e2fa bd9172c 730f163
This will result in:
The third argument simply points to the HEAD of the new parent commit; in our case, we have 730f163. This should remove that commit and all the commits after it.
In short, Git allows us to rebase a branch to a specific commit. git rebase -onto
The command accepts three parameters when rebasing.
Always remember that the third parameter determines the new parent commit.
For reprinting, please send an email to 1244347461@qq.com for approval. After obtaining the author's consent, kindly include the source as a link.
Related Articles
Adding files in Git
Publish Date:2025/03/27 Views:74 Category:Git
-
This article will discuss different ways to add files to our repository on Git. In Git, use git add the command to add all files We can git add add all the files without exception using the command as shown below. git add -A -A The -p param
Different ways to add files to staging with Git
Publish Date:2025/03/27 Views:199 Category:Git
-
While the command git add is probably the most commonly used command for adding files to your stash, other flags may come in handy depending on the situation. This article takes a deep dive into git add the flags you can use with the comman
Git add folder
Publish Date:2025/03/27 Views:100 Category:Git
-
git add Used to add specific folders and files. This tutorial will handle it in a modern way git add folder . git add Add all or specific folders and files to staging in Git using Use the following syntax to add files: git add file Use the
Recursively add files and folders in Git
Publish Date:2025/03/27 Views:136 Category:Git
-
Sometimes, we come across a situation where we have to adjust some files, folders, and subfolders that already exist in Git. A part of a nested folder system has to be added remotely to Git. This article will discuss how to use commands to
Undoing rm in Git
Publish Date:2025/03/27 Views:79 Category:Git
-
In Git, the term rm is git remove an alias for the command. So it is used to remove a single file or a bunch of files from the repository. git rm The main functionality of in Git is to remove tracked files using Git index. However, git rm i
Revert a file to a previous commit in Git
Publish Date:2025/03/27 Views:170 Category:Git
-
Git is a version control system. We use it to track changes made to files in a project directory. In a collaborative development environment, many team members often work on the same files and make changes to them. We often face a situation
Find deleted files in the commit history of a Git project
Publish Date:2025/03/27 Views:67 Category:Git
-
This article discusses finding deleted files in the commit history of a project. This is handy when you want to recover a file you deleted in a project. Without further ado, let’s jump right in. Steps to find and restore deleted files in
Tracking command history in Git
Publish Date:2025/03/27 Views:141 Category:Git
-
Git is one of those version control systems that keeps a record of the changes made by its developers. Through these records, we can track various earlier commits, which teammates made what changes at what time, understand the bugs that wer
Using Git Rebase from the Command Line
Publish Date:2025/03/27 Views:130 Category:Git
-
This article will discuss using the git rebase command effectively . The git rebase command allows us to change a range of commits and modify the commit history in our repository. We can edit, reorder, or squash commits using the git rebase