How to get the name of the current git branch into a variable in a shell script?
The * is expanded, what you can do is use sed instead of grep and get the name of the branch immediately:
branch=$(git branch | sed -n -e 's/^\* \(.*\)/\1/p')
And a version using git symbolic-ref, as suggested by Noufal Ibrahim
branch=$(git symbolic-ref HEAD | sed -e 's,.*/\(.*\),\1,')
To elaborate on the expansion, (as marco already did,) the expansion happens in the echo, when you do echo $test
with $test
containing * master
then the *
is expanded according to the normal expansion rules. To suppress this one would have to quote the variable, as shown by marco: echo "$test"
. Alternatively, if you get rid of the asterisk before you echo it, all will be fine, e.g. echo ${test:2}
will just echo master
. Alternatively you could assign it anew as you already proposed:
branch=${test:2}
echo $branch
This will echo master
, like you wanted.
How to get the current git branch in shell
To get the name of the current branch: git rev-parse --abbrev-ref HEAD
So, to check:
if test "$(git rev-parse --abbrev-ref HEAD)" != my-branch; then
echo Current branch is not my-branch >&2
exit 1
fi
Get current branch and store as variable using bash
alias IMLAZY='git branch |grep \* | cut -d " " -f2'
:)
How do I get the current branch name in Git?
git branch
should show all the local branches of your repo. The starred branch is your current branch.
To retrieve only the name of the branch you are on:
git rev-parse --abbrev-ref HEAD
or with Git 2.22 and above:
git branch --show-current
How to programmatically determine the current checked out Git branch
The correct solution is to take a peek at contrib/completions/git-completion.bash does that for bash prompt in __git_ps1
. Removing all extras like selecting how to describe detached HEAD situation, i.e. when we are on unnamed branch, it is:
branch_name="$(git symbolic-ref HEAD 2>/dev/null)" ||
branch_name="(unnamed branch)" # detached HEAD
branch_name=${branch_name##refs/heads/}
git symbolic-ref is used to extract fully qualified branch name from symbolic reference; we use it for HEAD, which is currently checked out branch.
Alternate solution could be:
branch_name=$(git symbolic-ref -q HEAD)
branch_name=${branch_name##refs/heads/}
branch_name=${branch_name:-HEAD}
where in last line we deal with the detached HEAD situation, using simply "HEAD" to denote such situation.
Added 11-06-2013
Junio C. Hamano (git maintainer) blog post, Checking the current branch programatically, from June 10, 2013 explains whys (and hows) in more detail.
bash script to check if the current git branch = x
Use git rev-parse --abbrev-ref HEAD
to get the name of the current branch.
Then it's only a matter of simply comparing values in your script:
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
if [[ "$BRANCH" != "x" ]]; then
echo 'Aborting script';
exit 1;
fi
echo 'Do stuff';
How to get the current branch within Github Actions?
I added a separate step for extracting branch name from $GITHUB_REF
and set it to the step output
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
after that, I can use it in the next steps with
- name: Push to ECR
id: ecr
uses: jwalton/gh-ecr-push@master
with:
access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
region: us-west-2
image: eng:${{ steps.extract_branch.outputs.branch }}
Related Topics
Does Gcc Have Any Options to Add Version Info in Elf Binary File
What Are the Rules for Valid Identifiers (E.G. Functions, Vars, etc) in Bash
How to Download a File from Server Using Ssh
Command Line: Search and Replace in All Filenames Matched by Grep
Why Doesn't Linux Use the Hardware Context Switch via the Tss
How to Use Ioctl() to Manipulate My Kernel Module
Tar a Directory, But Don't Store Full Absolute Paths in the Archive
How to Use Gdb in Eclipse for C/C++ Debugging
How to Modify the Source of Buildroot Packages for Package Development
How to Count Lines of Code Including Sub-Directories
How to Undo Strip - I.E. Add Symbols Back to Stripped Binary
Docker: Are Docker Links Deprecated
Using Ls to List Directories and Their Total Sizes
Getting Pids from Ps -Ef |Grep Keyword
Reading Living Process Memory Without Interrupting It
Perf_Event_Open - How to Monitoring Multiple Events
How to Create a Link to a Directory
Get Free Disk Space with Df to Just Display Free Space in Kb