The arrow points to the current branch
An arrow to the right of HEAD, in the output of git log --oneline --decorate --graph, indicates which branch (if any) is the current one.
* 44025ed (HEAD -> master) second commit
means that the symbolic reference HEAD currently points to the master branch; in other words, you are not in detached-HEAD state, and the current branch is master.
![enter image description here]()
In contrast,
* 44025ed (HEAD, master) second commit
means that the symbolic reference HEAD does not currently point to any branch, but to a commit (44025ed) directly; in other words, you are in detached-HEAD state. The master branch is only listed alongside HEAD because it happens to point to the same commit (44025ed).
![enter image description here]()
Some history
For information, this distinction was introduced in Git (2.4) shortly after I asked the following question: Can git log --decorate unambiguously tell me whether the HEAD is detached?
A small experiment (to fix ideas)
$ mkdir decorate-test
$ cd decorate-test/
$ git init
Initialized empty Git repository in /xxxxxxx/decorate-test/.git/
$ touch README
$ git add README
$ git commit -m "Add README"
[master (root-commit) 50781c9] Add README
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README
$ git log --oneline --decorate --graph
* 50781c9 (HEAD -> master) Add README
# Note the presence of the arrow in the output.
# Now, check out the commit directly to detach the HEAD:
$ git checkout 50781c9
Note: checking out '50781c9'.
You are in 'detached HEAD' state. You can look around, ...
HEAD is now at 50781c9... Add README
$ git log --oneline --decorate --graph
* 50781c9 (HEAD, master) Add README
# The arrow is gone!
# Check out master again to reattach the HEAD:
$ git checkout master
Switched to branch 'master'
$ git log --oneline --decorate --graph
* 50781c9 (HEAD -> master) Add README
# The arrow is back!