git mv
文章目录
- 1. 简介
- 2. 格式
- 3. 选项
- 4. 示例
- 4.1 重命名文件
- 4.2 移动文件到目录
- 4.3 移动多个文件到目录
- 4.4 强制移动(覆盖目标文件)
- 4.5 模拟执行(预览操作)
- 5. 其他
- 5.1 `git mv` vs 普通 `mv` 的区别
- 5.2 移动未跟踪文件
- 5.3 移动后如何撤销
- 5.4 常用别名设置
- 6. 小结
- 参考文献
1. 简介
git mv命令用于移动或重命名 Git 仓库中的文件或目录。
git mv会同时更新工作区和暂存区,相当于执行以下三个步骤的快捷方式:
mvold_name new_namegitrmold_namegitaddnew_name使用git mv可以避免手动执行上述三条命令,减少出错可能。
2. 格式
gitmv[-v][-f][-n][-k]<source><destination>gitmv[-v][-f][-n][-k]<source>...<destination-directory>3. 选项
-f,--force强制移动,即使目标文件已存在也会覆盖-k跳过会导致错误的操作(如移动一个未跟踪的文件) -n, --dry-run 模拟执行,显示将会执行的操作,但不实际执行 -v,--verbose显示详细输出4. 示例
4.1 重命名文件
# 将 README.txt 重命名为 README.mdgitmvREADME.txt README.md4.2 移动文件到目录
# 将 main.go 移动到 src/ 目录下gitmvmain.go src/4.3 移动多个文件到目录
# 将多个文件移动到 utils/ 目录gitmvfile1.go file2.go file3.go utils/4.4 强制移动(覆盖目标文件)
# 如果 target.go 已存在,强制覆盖gitmv-fsource.go target.go4.5 模拟执行(预览操作)
# 预览移动操作,不实际执行gitmv-nold_name new_name5. 其他
5.1git mvvs 普通mv的区别
| 操作 | 工作区 | 暂存区 | 额外步骤 |
|---|---|---|---|
mv old newgit add newgit rm old | 已移动 | 已更新 | 需手动执行三条命令 |
git mv old new | 已移动 | 已更新 | 一条命令搞定 |
5.2 移动未跟踪文件
git mv只能操作已被 Git 跟踪的文件。如需移动未跟踪文件,请使用普通mv命令,然后git add。
# 错误:git mv 无法移动未跟踪文件gitmvuntracked.go src/# ❌ 报错# 正确:先用 mv,再 addmvuntracked.go src/gitaddsrc/untracked.go5.3 移动后如何撤销
# 如果还未提交,可以重置暂存区并恢复文件gitreset HEAD new_namegitmvnew_name old_name# 或者使用 restore(Git 2.23+)gitrestore--stagednew_namegitmvnew_name old_name5.4 常用别名设置
gitconfig--globalalias.mv"git mv"gitconfig--globalalias.mvf"mv -f"# 使用别名gitmvf old new6. 小结
| 需求 | 命令 | 说明 |
|---|---|---|
| 重命名文件 | 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预览是个好习惯。
参考文献
Git - git-mv Documentation
