Add worktree rm [-d,--delete-branch] to delete git branch
This commit is contained in:
@@ -91,7 +91,8 @@ worktree() {
|
||||
worktree find [-i] <glob>
|
||||
|
||||
Manage git worktrees by branch name. A new branch starts from <start-point>,
|
||||
e.g. other/main, or origin/main by default."
|
||||
e.g. other/main, or origin/main by default. remove -d also deletes the branch,
|
||||
which must be merged unless -f is given."
|
||||
return 0
|
||||
fi
|
||||
|
||||
@@ -289,11 +290,13 @@ e.g. other/main, or origin/main by default."
|
||||
|
||||
rm|remove)
|
||||
local force=0
|
||||
local delete_branch=0
|
||||
local branches=()
|
||||
local arg
|
||||
for arg in "${@:2}"; do
|
||||
case "$arg" in
|
||||
-f|--force) force=1 ;;
|
||||
-d|--delete-branch) delete_branch=1 ;;
|
||||
*) branches+=("$arg") ;;
|
||||
esac
|
||||
done
|
||||
@@ -346,6 +349,14 @@ e.g. other/main, or origin/main by default."
|
||||
rmdir "$parent" 2>/dev/null || break
|
||||
parent=${parent:h}
|
||||
done
|
||||
if (( delete_branch )); then
|
||||
# An unmerged branch is only deleted with --force.
|
||||
if (( force )); then
|
||||
git branch -D "$branch" || failed=1
|
||||
else
|
||||
git branch -d "$branch" || failed=1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
return $failed
|
||||
;;
|
||||
|
||||
Reference in New Issue
Block a user