Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Git checkout - switching back to HEAD

I've been doing my project while at some point I discovered that one thing stopped working. I needed to look up the state of my code when it was working correctly, so I've decided to use git checkout (because I wanted to check-something-out). And so I've done

git checkout SHA 

couple times while going back to point from which I can't go to HEAD, the output is following:

git checkout SHA-HEAD  error: Your local changes to the following files would be overwritten by checkout:     [list of files] Please, commit your changes or stash them before you can switch branches. Aborting 

I am pretty much sure I have NOT changed anything. The command

git checkout master 

gives the same output.

Is there a way to go back to HEAD?

What is the safe way of "jumping over" history commits?

like image 745
asdfgh Avatar asked Feb 07 '17 05:02

asdfgh


People also ask

Does git checkout change head?

Internally, the git checkout command simply updates the HEAD to point to either the specified branch or commit. When it points to a branch, Git doesn't complain, but when you check out a commit, it switches into a “detached HEAD” state.

How do I go back to head in git?

To hard reset files to HEAD on Git, use the “git reset” command with the “–hard” option and specify the HEAD. The purpose of the “git reset” command is to move the current HEAD to the commit specified (in this case, the HEAD itself, one commit before HEAD and so on).

Can we reverse git checkout?

Git Checkout FileIf you stage and commit the checked-out file, this has the effect of “reverting” to the old version of that file. Note that this removes all of the subsequent changes to the file, whereas the git revert command undoes only the changes introduced by the specified commit.


1 Answers

You can stash (save the changes in temporary box) then, back to master branch HEAD.

$ git add . $ git stash $ git checkout master 

Jump Over Commits Back and Forth:

  • Go to a specific commit-sha.

      $ git checkout <commit-sha> 
  • If you have uncommitted changes here then, you can checkout to a new branch | Add | Commit | Push the current branch to the remote.

      # checkout a new branch, add, commit, push   $ git checkout -b <branch-name>   $ git add .   $ git commit -m 'Commit message'   $ git push origin HEAD          # push the current branch to remote     $ git checkout master           # back to master branch now 
  • If you have changes in the specific commit and don't want to keep the changes, you can do stash or reset then checkout to master (or, any other branch).

      # stash   $ git add -A   $ git stash   $ git checkout master    # reset   $ git reset --hard HEAD   $ git checkout master 
  • After checking out a specific commit if you have no uncommitted change(s) then, just back to master or other branch.

      $ git status          # see the changes   $ git checkout master    # or, shortcut   $ git checkout -      # back to the previous state 
like image 69
Sajib Khan Avatar answered Sep 17 '22 09:09

Sajib Khan