Function: magit-worktree-delete
magit-worktree-delete is an interactive and byte-compiled function
defined in magit-worktree.el.
Signature
(magit-worktree-delete WORKTREE)
Documentation
Delete a worktree, defaulting to the worktree at point.
The primary worktree cannot be deleted.
Key Bindings
Source Code
;; Defined in ~/.emacs.d/elpa/magit-20260411.1452/magit-worktree.el
(defun magit-worktree-delete (worktree)
"Delete a worktree, defaulting to the worktree at point.
The primary worktree cannot be deleted."
(interactive
(list (magit-completing-read "Delete worktree"
(mapcar #'car (cdr (magit-list-worktrees)))
nil t nil nil
(magit-section-value-if 'worktree))))
(if (file-directory-p (expand-file-name ".git" worktree))
(user-error "Deleting %s would delete the shared .git directory" worktree)
(let ((primary (file-name-as-directory (caar (magit-list-worktrees)))))
(when (file-exists-p worktree)
(let (uncommitted)
(magit-confirm
(cond ((let ((default-directory worktree))
(or (magit-anything-modified-p)
(magit-untracked-files)))
(setq uncommitted 'danger))
(magit-delete-by-moving-to-trash 'trash)
('delete))
(format "%s worktree \"%s\"%s"
(if magit-delete-by-moving-to-trash "Trash" "Delete")
(file-name-nondirectory (directory-file-name worktree))
(if uncommitted " despite uncommitted changes" ""))
nil nil (list worktree)))
(if magit-delete-by-moving-to-trash
(let ((delete-by-moving-to-trash t))
(delete-directory worktree t t))
(magit-call-git "worktree" "remove" "--force" worktree)))
(if (file-exists-p default-directory)
(magit-run-git "worktree" "prune")
(let ((default-directory primary))
(magit-run-git "worktree" "prune"))
(when (derived-mode-p 'magit-status-mode)
(kill-buffer)
(magit-status-setup-buffer primary))))))