pcottle/learnGitBranching · error · GitError

--delete doesn't make sense without any refs

Error message

--delete doesn't make sense without any refs

What it means

Real git errors out when `git push --delete` is given no ref to delete; this simulation mirrors that. The first arg after the refspec parsing is empty, so the deletion target is missing.

Source

Thrown at src/js/git/commands.js:971

      // the arguments it wants as well... get ready!
      var generalArgs = command.getGeneralArgs();

      // put the commandOption of delete back in the generalArgs
      // as it is a flag option
      if(isDelete) {
        let option = commandOptions['-d'] || commandOptions['--delete'];
        generalArgs = option[0] === 'origin'
        ? option.concat(generalArgs)
        : generalArgs.concat(option);
      }

      command.twoArgsForOrigin(generalArgs);
      assertOriginSpecified(generalArgs);
      var firstArg = generalArgs[1];

      if(isDelete) {
        if(!firstArg) {
          throw new GitError({
            msg: intl.todo(
              '--delete doesn\'t make sense without any refs'
            )
          });
        }

        if(isColonRefspec(firstArg)) {
          throw new GitError({
            msg: intl.todo(
              '--delete only accepts plain target ref names'
            )
          });
        }

        // transform delete target ref to delete colon refspec
        firstArg = ":"+firstArg;
      }

View on GitHub (pinned to 5b09d0ff96)

Solutions

  1. Add the branch name: `git push origin --delete <branch>`
  2. Use the shorthand `git push origin :<branch>`
  3. Check that arguments survive shell escaping/quoting

Example fix

// before
git push origin --delete
// after
git push origin --delete feature-x
Defensive patterns

Strategy: validation

Validate before calling

var args = command.getGeneralArgs();
if (!(args[0] === 'origin' && args[1])) throw new Error('push --delete needs a ref');

Prevention

When it happens

Trigger: `git push origin --delete` with no branch name (isDelete true, generalArgs[1] empty).

Common situations: Typos or trailing-space entry where the branch to delete is omitted; copy-paste of a truncated command.

Related errors


AI-assisted analysis of pcottle/learnGitBranching@5b09d0ff96 (2026-08-27). Data as JSON: /api/errors/d1d7d2c3f655a2ca. Report an issue: GitHub.