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))))))