git-mv(1)

git-mv1

Move or rename a file, a directory, or a symlink

Usage

git mv [-v] [-f] [-n] [-k] <source> <destination>

git mv [-v] [-f] [-n] [-k] <source> ... <destination-directory>

Overview

Move or rename a file, directory, or symlink.

In the first form, it renames <source>, which must exist and be either a file, symlink or directory, to <destination>. In the second form, <destination-directory> has to be an existing directory; the given sources will be moved into this directory.

The index is updated after successful completion, but the change must still be committed.

Options

-f, --force

Force renaming or moving of a file even if the <destination> exists.

-k

Skip move or rename actions which would lead to an error condition. An error happens when a source is neither existing nor controlled by Git, or when it would overwrite an existing file unless -f is given.

-n, --dry-run

Do nothing; only show what would happen

-v, --verbose

Report the names of files as they are moved.

Submodules

Moving a submodule using a gitfile (which means they were cloned with a Git version 1.7.8 or newer) will update the gitfile and core.worktree setting to make the submodule work in the new location. It also will attempt to update the submodule.<name>.path setting in the gitmodules(5) file and stage that file (unless -n is used).

Git

Part of the git(1) suite

Releases

11 releases since Debian 4.0 (Etch); the text changed 10 times.

  1. 4.0
  2. 5.0
  3. 6.0
  4. 7
  5. 8
  6. 9
  7. 10
  8. 11
  9. 12
  10. 13
  11. Arch

--dry-run since Debian 5.0 (Lenny); --force since Debian 6.0 (Squeeze); --verbose since Debian 7 (Wheezy); -v since Debian 7 (Wheezy).

Bugs

Each time a superproject update moves a populated submodule (e.g. when switching between commits before and after the move) a stale submodule checkout will remain in the old location and an empty directory will appear in the new location. To populate the submodule again in the new location the user will have to run "git submodule update" afterwards. Removing the old directory is only safe when it uses a gitfile, as otherwise the history of the submodule will be deleted too. Both steps will be obsolete when recursive submodule update has been implemented.

From git 2.56.0-1 in Arch Linux 2026-11-01. Parsed by carta from the page's man source.