How to Move Git Branch Pointer to Different Commit
- Move Git Branch Pointer to Different Commit While Checked Out in the Destination Branch
- Move Git Branch Pointer to Different Commit While Not Checked Out in the Destination Branch
This article illustrates how we can move a Git branch pointer to a different commit. We will see how we can move the pointer while checked out and not-checked out on the destination branch.
Let’s start with the simpler one.
Move Git Branch Pointer to Different Commit While Checked Out in the Destination Branch
The example below shows a feature
branch in our repository. Here is the commit history.
We want to move the branch pointer from the 4ee91ac
commit to the e65841a
commit (i.e., HEAD@ {2}
). How do we go about this?
Since we are checked out in the feature
branch, our destination, we can run the git reset
command, as shown below.
$ git reset --hard e65841a
Output:
HEAD is now at e65841a Update README.md
This will move our ref to the specified commit. Pretty straightforward, right?
Let’s move to the next scenario.
Move Git Branch Pointer to Different Commit While Not Checked Out in the Destination Branch
Let’s switch to the master
branch. How can we move the branch pointer for the feature
branch while checked out in the master
branch?
There are two methods available. We will start with the easiest one.
the git branch
Command
Here is the basic syntax for the command for this scenario.
$ git branch -f <branch-name> <commit-hash>
In this scenario, we want to move the pointer to the afcc8bb
commit. How do we go about it?
As shown below, we can move the pointer for our feature
branch with the git branch
command.
$ git branch -f feature afcc8bb
This should move the pointer to the specified commit. Let’s confirm our case.
It is as simple as that. Let’s check out the other method.
the git update-ref
Command
As shown below, we can use the git update-ref
command to move the branch pointer.
$ git update-ref -m "reset: Reset <branch-name> to <sha1-commit-hash>" refs/heads/<branch-name> <sha1-commit-hash>
We want to move the pointer further to the 124bfa9
commit. Here is how we will do it.
First, let’s switch back to the master
branch. We will then run the command, as shown below.
$ git update-ref -m "reset: Reset feature to 124bfa9" refs/heads/feature 124bfa9
The command above will move the pointer and add a message to the reflog
for our feature
branch. Let’s confirm our case.
There you have it.
In a nutshell, Git allows us to move the branch pointer while both checked out and not checked out in the destination branch. We have covered different commands for both scenarios.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn