diff --git a/git_07_rename_branch.sh b/git_07_rename_branch.sh new file mode 100755 index 0000000..7235a62 --- /dev/null +++ b/git_07_rename_branch.sh @@ -0,0 +1,34 @@ +#!/bin/env bash + +if [ ! $# -eq 2 ] +then + echo "usage : rename old_branch new_branch" + exit 1 +fi + + +# Source - https://stackoverflow.com/a +# Posted by CodeWizard, modified by community. See post 'Timeline' for change history +# Retrieved 2025-11-21, License - CC BY-SA 4.0 + +# Names of things - allows you to copy/paste commands +old_name=$1 +new_name=$2 +remote=all + +# Rename the local branch to the new name +git branch -m $old_name $new_name + +# Delete the old branch on remote +git push $remote --delete $old_name + +# Prevent git from using the old name when pushing in the next step. +# Otherwise, git will use the old upstream name instead of $new_name. +git branch --unset-upstream $new_name + +# Push the new branch to remote +git push $remote $new_name + +# Reset the upstream branch for the new_name local branch +git push $remote -u $new_name + diff --git a/mygitflow b/mygitflow index 8da42e3..922690a 100755 --- a/mygitflow +++ b/mygitflow @@ -35,5 +35,6 @@ case $GITCMD in ("merge") git_04_merge_branch.sh $@;; ("delete") git_05_delete_feature_branch.sh $@;; ("delete_all") git_06_delete_all_features_branch.sh $@;; + ("rename") git_07_rename_branch.sh $@;; (*) echo && echo "$GITCMD is not a GITCMD !" && usage;; esac