文章目录
- [1. 简介](#1. 简介)
- [2. 格式](#2. 格式)
- [3. 选项](#3. 选项)
- [4. 示例](#4. 示例)
-
- [4.1 重命名文件](#4.1 重命名文件)
- [4.2 移动文件到目录](#4.2 移动文件到目录)
- [4.3 移动多个文件到目录](#4.3 移动多个文件到目录)
- [4.4 强制移动(覆盖目标文件)](#4.4 强制移动(覆盖目标文件))
- [4.5 模拟执行(预览操作)](#4.5 模拟执行(预览操作))
- [5. 其他](#5. 其他)
-
- [5.1 `git mv` vs 普通 `mv` 的区别](#5.1
git mvvs 普通mv的区别) - [5.2 移动未跟踪文件](#5.2 移动未跟踪文件)
- [5.3 移动后如何撤销](#5.3 移动后如何撤销)
- [5.4 常用别名设置](#5.4 常用别名设置)
- [5.1 `git mv` vs 普通 `mv` 的区别](#5.1
- [6. 小结](#6. 小结)
- 参考文献
1. 简介
git mv 命令用于移动或重命名 Git 仓库中的文件或目录。
git mv 会同时更新工作区和暂存区,相当于执行以下三个步骤的快捷方式:
bash
mv old_name new_name
git rm old_name
git add new_name
使用 git mv 可以避免手动执行上述三条命令,减少出错可能。
2. 格式
bash
git mv [-v] [-f] [-n] [-k] <source> <destination>
git mv [-v] [-f] [-n] [-k] <source>... <destination-directory>
3. 选项
bash
-f, --force
强制移动,即使目标文件已存在也会覆盖
-k
跳过会导致错误的操作(如移动一个未跟踪的文件)
-n, --dry-run
模拟执行,显示将会执行的操作,但不实际执行
-v, --verbose
显示详细输出
4. 示例
4.1 重命名文件
bash
# 将 README.txt 重命名为 README.md
git mv README.txt README.md
4.2 移动文件到目录
bash
# 将 main.go 移动到 src/ 目录下
git mv main.go src/
4.3 移动多个文件到目录
bash
# 将多个文件移动到 utils/ 目录
git mv file1.go file2.go file3.go utils/
4.4 强制移动(覆盖目标文件)
bash
# 如果 target.go 已存在,强制覆盖
git mv -f source.go target.go
4.5 模拟执行(预览操作)
bash
# 预览移动操作,不实际执行
git mv -n old_name new_name
5. 其他
5.1 git mv vs 普通 mv 的区别
| 操作 | 工作区 | 暂存区 | 额外步骤 |
|---|---|---|---|
mv old new git add new git rm old |
已移动 | 已更新 | 需手动执行三条命令 |
git mv old new |
已移动 | 已更新 | 一条命令搞定 |
5.2 移动未跟踪文件
git mv 只能操作已被 Git 跟踪的文件。如需移动未跟踪文件,请使用普通 mv 命令,然后 git add。
bash
# 错误:git mv 无法移动未跟踪文件
git mv untracked.go src/ # ❌ 报错
# 正确:先用 mv,再 add
mv untracked.go src/
git add src/untracked.go
5.3 移动后如何撤销
bash
# 如果还未提交,可以重置暂存区并恢复文件
git reset HEAD new_name
git mv new_name old_name
# 或者使用 restore(Git 2.23+)
git restore --staged new_name
git mv new_name old_name
5.4 常用别名设置
bash
git config --global alias.mv "git mv"
git config --global alias.mvf "mv -f"
# 使用别名
git mvf old new
6. 小结
| 需求 | 命令 | 说明 |
|---|---|---|
| 重命名文件 | git mv old new |
重命名并自动暂存 |
| 移动文件到目录 | git mv file dir/ |
移动并自动暂存 |
| 移动多个文件 | git mv f1 f2 f3 dir/ |
批量移动 |
| 强制移动 | git mv -f old new |
覆盖已存在的目标文件 |
| 预览操作 | git mv -n old new |
模拟执行,不实际移动 |
一句话总结 :
git mv是 Git 中移动/重命名文件的快捷命令,它会自动更新工作区和暂存区。它只能操作已跟踪的文件;对于未跟踪文件,请先用普通mv再git add。移动前用-n预览是个好习惯。