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

相关推荐
Patrick_Wilson5 小时前
Git Worktree 原理详解:从 objects / refs 看懂多分支并行与多 Agent 协作
git·面试·ai编程
yaoxiaoganggang5 小时前
克隆 Superpowers 的规则库到你的本地(或者直接作为 Git Submodule)
人工智能·经验分享·git·ai编程
Python私教7 小时前
用 Claude Code 做大型重构不翻车:分批+Git 兜底+验证闭环的实战流程(2026)
git·重构·ai编程·代码重构·工程实践·claude code
Shawn Dev8 小时前
团队协作中的 Git Tag 最佳实践:从入门到精通
大数据·git·elasticsearch
独隅10 小时前
Git/GitHub/GitLab/Gitee 核心对比指南
git·gitlab·github
佛山个人技术开发10 小时前
GitCode个人技术开发者总结完整使用指南
windows·git·svn·github·gitcode
江华森11 小时前
基于 Git 的自动集成交付(Git-Driven CI/CD)实战
git·ci/cd
Dontla12 小时前
.gitkeep文件作用(让Git追踪空目录,使该目录能被纳入版本控制)!.gitkeep
大数据·git·elasticsearch
shandianchengzi12 小时前
【记录】VSCode|Windows 下 VS Code 配置 Git Bash 为默认终端完整教程
windows·git·vscode·bash