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

相关推荐
和你看星星13 小时前
Git rerere:让重复冲突只解决一次
git
嘻嘻仙人4 天前
Ubuntu中 git上传自己的项目和二次上传一般流程
git·github
Patrick_Wilson4 天前
Squash Merge 的血缘陷阱:为什么删掉的代码又活了过来
前端·git·程序员
沉浸学习的匿名网友4 天前
什么是 .gitignore?为什么每个 Git 项目几乎都离不开它?
前端·git
深海鱼在掘金5 天前
Git 完全指南 —— 第3章:理解工作区、暂存区、版本库三个核心
git
江华森5 天前
Git 基础筑基:从原理到团队协作的全栈实战
git
JakeJiang6 天前
Git 必备命令指南:从日常高频到项目开发实战
git
叫我少年6 天前
Windows 中安装 git
git
深海鱼在掘金12 天前
Git 完全指南 —— 第1章:Git 概览与版本控制演进
git
noravinsc12 天前
关于Git Flow
git