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

相关推荐
不老刘11 小时前
Antigravity 的 New Worktree 模式:给 AI 代理一个安全的“平行工位”
人工智能·git·ai编程·antigravity
光谱SpectrAI12 小时前
Windows 也中招:Git Bash 和 Node 仍信任泄露的 eMudhra 证书
git
YIN_尹12 小时前
【git原理与使用】git初识与安装
大数据·git·elasticsearch
Leo_Mr17 小时前
Vue3 项目配置 Git 提交规范(企业通用方案:husky + commitlint + cz-git + lint-staged)
git
jyOverQ17 小时前
Git rebase 和 merge 有什么区别?什么时候该用哪个?
git
晗夜未央18 小时前
跨仓库 Skill 换台电脑就失效?用 Git remote 校验项目
人工智能·git·python
Lsetea18 小时前
Git访问HTTPS证书不受信任:用URL级sslCAInfo限定私有CA范围
git·https·开发工具·ssl证书·ca证书
এ慕ོ冬℘゜1 天前
Git 基础入门|和 SVN 对比 + 四大区域 + 常用命令详解
git·svn
DevLoom_1 天前
macOS 命令行 curl/git 报 SSL 证书错误?eMudhra 事件完整修复指南
git·macos·ssl
keyipatience2 天前
Git学习(4)Git分布式优势与实战配置全解析
git·学习