ID = git_ask_04
Status: closed
How to understand HEAD in git?
Question
How to understand HEAD?
Answer
HEAD is a pointer, pointing to the current active branch(master, dev, or other branches).
Q: How to switch between different branches?
A: Use git checkout
.
step1: create branch dev
create branch dev:
$ git checkout -b dev
Switched to a new branch 'dev'
HEAD already pointing to dev:
$ git reflog
e6f08b2 (HEAD -> dev, origin/master, origin/HEAD, base/master, master) HEAD@{0}: checkout: moving from master to dev
e6f08b2 (HEAD -> dev, origin/master, origin/HEAD, base/master, master) HEAD@{1}: commit: correct misunderstanding on 'git bash here'
e99ae95 HEAD@{2}: commit: commit operation in svn and git
step2: switch to branch master
switch to branch master:
$ git checkout master
Switched to branch 'master'
Your branch is up to date with 'origin/master'.
HEAD is now pointing to master (dev is the same commit-id as master):
$ git reflog
e6f08b2 (HEAD -> master, origin/master, origin/HEAD, base/master, dev) HEAD@{0}: checkout: moving from dev to master
e6f08b2 (HEAD -> master, origin/master, origin/HEAD, base/master, dev) HEAD@{1}: checkout: moving from master to dev
e6f08b2 (HEAD -> master, origin/master, origin/HEAD, base/master, dev) HEAD@{2}: commit: correct misunderstanding on 'git bash here'
e99ae95 HEAD@{3}: commit: commit operation in svn and git
step3: delete branch dev
delete branch dev:
$ git branch -d dev
Deleted branch dev (was e6f08b2).
HEAD is pointing to master (dev is removed):
$ git reflog
e6f08b2 (HEAD -> master, origin/master, origin/HEAD, base/master) HEAD@{0}: checkout: moving from dev to master
e6f08b2 (HEAD -> master, origin/master, origin/HEAD, base/master) HEAD@{1}: checkout: moving from master to dev
e6f08b2 (HEAD -> master, origin/master, origin/HEAD, base/master) HEAD@{2}: commit: correct misunderstanding on 'git bash here'
e99ae95 HEAD@{3}: commit: commit operation in svn and git