I\'m from a Subversion background and, when I had a branch, I knew what I was working on with \"These working files point to this branch\".
But with Git I\'m not sur
Returns either branch name or SHA1 when on detached head:
git rev-parse --abbrev-ref HEAD | grep -v ^HEAD$ || git rev-parse HEAD
This is a short version of @dmaestro12's answer and without tag support.
git branch | grep -e "^*" | cut -d' ' -f 2
will show only the branch name
If you really want the last branch/tag checked out in detached HEAD state as well.
git reflog HEAD | grep 'checkout:' | head -1 | rev | cut -d' ' -f1 | rev
Update This is nicer if you have and aren't scared of awk.
git reflog HEAD | grep 'checkout:' | head -1 | awk '{print $NF}'
you can use git bash on the working directory command is as follow
git status -b
it will tell you on which branch you are on there are many commands which are useful some of them are
-s
--short Give the output in the short-format.
-b --branch Show the branch and tracking info even in short-format.
--porcelain[=] Give the output in an easy-to-parse format for scripts. This is similar to the short output, but will remain stable across Git versions and regardless of user configuration. See below for details.
The version parameter is used to specify the format version. This is optional and defaults to the original version v1 format.
--long Give the output in the long-format. This is the default.
-v --verbose In addition to the names of files that have been changed, also show the textual changes that are staged to be committed (i.e., like the output of git diff --cached). If -v is specified twice, then also show the changes in the working tree that have not yet been staged (i.e., like the output of git diff).
Why not use git-aware shell prompt, which would tell you name of current branch? git status
also helps.
How git-prompt.sh from contrib/
does it (git version 2.3.0), as defined in __git_ps1
helper function:
First, there is special case if rebase in progress is detected. Git uses unnamed branch (detached HEAD) during the rebase process to make it atomic, and original branch is saved elsewhere.
If the .git/HEAD
file is a symbolic link (a very rare case, from the ancient history of Git), it uses git symbolic-ref HEAD 2>/dev/null
Else, it reads .git/HEAD
file. Next steps depends on its contents:
If this file doesn't exist, then there is no current branch. This usually happens if the repository is bare.
If it starts with 'ref: '
prefix, then .git/HEAD
is symref (symbolic reference), and we are on normal branch. Strip this prefix to get full name, and strip refs/heads/
to get short name of the current branch:
b="${head#ref: }"
# ...
b=${b##refs/heads/}
If it doesn't start with 'ref: '
, then it is detached HEAD (anonymous branch), pointing directly to some commit. Use git describe ...
to write the current commit in human-readable form.
I hope that helps.
To display the current branch you're on, without the other branches listed, you can do the following:
git rev-parse --abbrev-ref HEAD
Reference: