Git how to checkout a commit of a branch

Git

Git Problem Overview


How can I check out a commit version of a branch in git?

For example, my branch, Dev, has a commit ad4f43af43e. How can I check out that commit? Not just a single file, but a whole branch.

I searched online and found: git checkout <commit>, but it didn't specify branch name

Git Solutions


Solution 1 - Git

git checkout <hash>         # non named commit
git checkout <branch_name>  # named commit

The two lines above will place the HEAD pointer on the given commit. You should know that a branch name is a commit, except it can evolve if a new commit is added when you're on that branch.

If you want to place your branch Dev on the commit ad4f43af43e you can do this

git branch -f Dev ad4f43af43e

Be careful! This is dangerous because you may lose commits.

Solution 2 - Git

If you're looking to branch out from a specific commit of a branch, first be sure you are in the branch,

git checkout dev

Now I want to checkout a specific commit 123654 from the dev branch to a new branch while keeping the head on main branch.

git checkout -b new-branch 123654

Solution 3 - Git

You can checkout to the commit-sha then, create a new branch (say, feature) from that commit.

$ git checkout <commit>
$ git checkout -b feature    # create a new branch named `feature` from the commit


# if you want to replace the current branch (say 'develop') with new created branch ('feature') 
$ git branch -D develop     # delete the local 'develop' branch
$ git checkout -b develop   # create a new 'develop' branch from 'feature' branch 

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionuser1615666View Question on Stackoverflow
Solution 1 - GitsmarberView Answer on Stackoverflow
Solution 2 - GitmyselfmiqdadView Answer on Stackoverflow
Solution 3 - GitSajib KhanView Answer on Stackoverflow