## 命名

git-mv - 移动或重命名文件，目录或符号链接

## 概要

    git mv <options>… <args>…

## 描述

移动或重命名文件，目录或符号链接。

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

在第一种形式中，它将 <source> 重命名为 <destination> ，它必须存在，并且可以是文件，符号链接或目录。在第二种形式中，最后一个参数必须是现有目录; 给定的源将被移动到这个目录中。

成功完成后更新索引，但仍必须提交更改。

## 选项

-f --force

即使目标存在，也要强制重命名或移动文件

-k

跳过移动或重命名会导致错误情况的操作。当源既不存在也不受 Git 控制时，或者除非`-f`给出，否则会覆盖现有文件时发生错误。

-n --dry-run

没做什么; 只显示会发生什么

-v --verbose

报告移动文件的名称。

## 子模块

使用 gitfile 移动子模块（意味着它们使用 Git 1.7.8 或更高版本进行克隆）将更新 gitfile 和 core.worktree 设置，以使子模块在新位置工作。它还会尝试更新 gitmodules [5] 文件中的 submodule 。<name> .path 设置并对该文件执行阶段操作（除非使用了-n ）。

## Bugs

每次超级项目更新移动填充的子模块时（例如，在移动之前和之后在提交之间切换时）旧的子模块检出将保留在旧位置，并且新的位置将出现空目录。要在新位置再次填充子模块，用户必须在之后运行 “git submodule update” 。删除旧目录仅在使用 gitfile 时才是安全的，否则子模块的历史记录也会被删除。当递归子模块更新已经实施时，这两个步骤都将被废弃。