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 中移动/重命名文件的快捷命令,它会自动更新工作区和暂存区。它只能操作已跟踪的文件;对于未跟踪文件,请先用普通 mv 再 git add。移动前用 -n 预览是个好习惯。


参考文献

Git - git-mv Documentation

相关推荐
小此方4 小时前
「插曲:Git」企业规范篇:DevOps开发模型、Git Flow五类分支设计与测试/预发布/生产环境Bug修复及Hotfix紧急发布流程
git·bug·devops
溪语流沙4 小时前
【Web全栈进阶】JWT无状态认证:签发、校验、刷新
前端·git·python·github
OsDepK5 小时前
osgit纯图形化git版本管理工具,多人开发团队协作工具,支持Mac与Windows
git
Madison-No711 小时前
Git版本控制工具(一)
git
小小小米粒19 小时前
重置本地git
大数据·git·elasticsearch
鶴哥只手遮天1 天前
第 8 章 工作区与检出:unpack-trees 与并行 checkout
git
xing-xing1 天前
git 相关命令总结
git
A-刘晨阳1 天前
GitLab + ArgoCD 实现 Kubernetes GitOps 自动化部署
运维·人工智能·git·kubernetes·自动化·云计算·argocd
ControlRookie2 天前
SyncBridge:一个 CODESYS 工程与 AI 之间工程师级的同步工具
git·ai编程·codesys·工业软件·controlrookie
鬼手点金2 天前
opencode-性能优化建议
java·人工智能·git·自动化·nanogpt