We use feature/ticket-number-team-abbr as feature branch name, such as feature/mt-1234-axo
at work.
If you mainly work with a huge repository. Everytime, you switch to the integration/main branch and run git pull
before you create a feature branch, it would take a while as it needs to update your work directory and normally there are a lot of files changed.
I use a different way which is a little bit speedy. Whatever which branch you are now in, run
git fetch && git checkout -b feature/mt-xxxx-axo origin/integration
It helps but I still need to type the above, which is still a lot of letters! So, I create a bash script to help me more,
see the following command nbi 38546
nbi 38546
remote: Enumerating objects: 22, done.
remote: Counting objects: 100% (22/22), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 22 (delta 17), reused 22 (delta 17), pack-reused 0
Unpacking objects: 100% (22/22), 4.43 KiB | 5.00 KiB/s, done.
From github.com:Euronet-XE/DFX
941796a8a..11f76bff7 feature/mt-38183-fugu -> origin/feature/mt-38183-fugu
* [new branch] feature/mt-39492-ice -> origin/feature/mt-39492-ice
* [new branch] feature/mt-39744-ice-card -> origin/feature/mt-39744-ice-card
branch 'feature/mt-38546-axo' set up to track 'origin/integration'.
David.Wei @ /d/git/xemt-core/dfx - [feature/mt-38546-axo] $
what’s in this nbi
script? here it is
cat ~/bin/nbi
#!/bin/bash
# Check if the current directory is a git repository
if ! git rev-parse --is-inside-work-tree &>/dev/null; then
echo "Error: Current directory is not a git repository."
exit 1
fi
# Run git fetch to get the latest changes from the remote repository
git fetch
# Determine the action based on the script name
case "$(basename "$0")" in
nbi)
# Check if an argument is provided
if [[ $# -eq 1 ]]; then
# Run git checkout to create and switch to a new branch based on the integration branch
git checkout -b "feature/mt-$1-axo" "origin/integration"
exit $?
else
echo "Usage: $0 <anumber>"
exit 1
fi
;;
nbm)
# Check if an argument is provided
if [[ $# -eq 1 ]]; then
# Run git checkout to create and switch to a new branch based on the main branch
git checkout -b "feature/mt-$1-axo" "origin/main"
exit $?
else
echo "Usage: $0 <anumber>"
exit 1
fi
;;
*)
echo "Error: Unsupported script name."
exit 1
;;
esac
why do I call it nbi
? haha, it is a ABBR from new branch from integration
Wait, why did I mention nbm
in the script? Yes, you can copy this nbi
script with name nbm
, then using the nbm
command it will work the same way with the repositories that use main
as the integration branch.
Did you see? How lazy I am!
2024-07-22 Update:
I also wrote another script sw
to ease the switching branches operation:
#!/bin/bash
# Check if the user provided a number
if [ -z "$1" ]; then
echo "Usage: sw <number>"
exit 1
fi
# Construct the branch name
branch_name="feature/mt-$1-axo"
# Switch to the branch
git switch "$branch_name"
# Check if the switch was successful
if [ $? -eq 0 ]; then
echo "Switched to branch '$branch_name'"
else
echo "Failed to switch to branch '$branch_name'"
fi