git - How to move HEAD back to a previous location? (Detached head) -


in git, trying squash commit merging in branch , resetting head previous place via:

git reset origin/master 

but need step out of this. how can move head previous location?

i have sha1 frag (23b6772) of commit need move to.
how can commit?

before answering lets add background, explaining head.

first of head?

head reference current commit (latest) on current branch.
there can single head @ given time. (excluding git worktree)

the content of head stored inside .git/head , contains 40 bytes sha-1 of current commit.


detached head

if not on latest commit - meaning head pointing prior commit in history called detached head.

enter image description here

on command line this- sha-1 instead of branch name since head not pointing the tip of current branch

enter image description here


a few options on how recover detached head:


git checkout

git checkout <commit_id> git checkout -b <new branch> <commit_id> git checkout head~x // x number of commits t go 

this checkout new branch pointing desired commit.
command checkout given commit.
@ point can create branch , start work point on.

# checkout given commit.  # doing result in `detached head` mean `head` # not pointing latest need checkout branch # in order able update code. git checkout <commit-id>  # create new branch forked given commit git checkout -b <branch name> 

git reflog

you can use reflog well.
git reflog display change updated head , checking out desired reflog entry set head commit.

every time head modified there new entry in reflog

git reflog git checkout head@{...} 

this desired commit

enter image description here


git reset head --hard <commit_id>

"move" head desired commit.

# destroy local modifications. # don't if have uncommitted work want keep. git reset --hard 0d1d7fc32  # alternatively, if there's work keep: git stash git reset --hard 0d1d7fc32 git stash pop # saves modifications, reapplies patch after resetting. # merge conflicts, if you've modified things # changed since commit reset to. 


git revert <sha-1>

"undo" given commit or commit range.
reset command "undo" changes made in given commit.
new commit undo patch commited while original commit remain in history well.

# add new commit undo of original one. # <sha-1> can commit(s) or commit range git revert <sha-1> 

this schema illustrate command what.
can see there reset && checkout modify head.

enter image description here


Comments

Popular posts from this blog

Command prompt result in label. Python 2.7 -

javascript - How do I use URL parameters to change link href on page? -

amazon web services - AWS Route53 Trying To Get Site To Resolve To www -