git mv

文章目录

  • [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 mv vs 普通 mv 的区别)
    • [5.2 移动未跟踪文件](#5.2 移动未跟踪文件)
    • [5.3 移动后如何撤销](#5.3 移动后如何撤销)
    • [5.4 常用别名设置](#5.4 常用别名设置)
  • [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 中移动/重命名文件的快捷命令,它会自动更新工作区和暂存区。它只能操作已跟踪的文件;对于未跟踪文件,请先用普通 mvgit add。移动前用 -n 预览是个好习惯。


参考文献

Git - git-mv Documentation

相关推荐
CodexDave10 小时前
数据库连接池耗尽:排查顺序与三层兜底
服务器·前端·数据库·git·云原生·容器·kubernetes
乐观的Terry11 小时前
5、发布系统-Git 集成
大数据·git·elasticsearch
不怕犯错,就怕不做11 小时前
GIT的简单打patch应用format-patch and git am
linux·git·全文检索
Byron Loong12 小时前
【Git】如何检查 Ubuntu 系统上 gitLab 是否开启
git·ubuntu·gitlab
lar_slw13 小时前
git删除上一次提交
git
leoZ2311 天前
Git 集成实战完全指南(四):Git 冲突解决
大数据·git·elasticsearch
枫荷1 天前
Git LFS 大文件优化说明
git
techdashen1 天前
不用再反复 stash:用 Git Worktree 同时开发多个分支
大数据·git·elasticsearch
leoZ2312 天前
Git 集成实战完全指南(八):团队协作最佳实践
git
晴雨天️2 天前
Git工具使用指南
笔记·git