Git移动文件,重命名文件

Git不直接跟踪文件移动,但能智能识别。使用`git mv`命令可移动或重命名文件,相当于`mv`与`git add`的组合。文章详细介绍了移动不存在文件、目标路径不存在、目标路径已有同名文件以及移出仓库的情况,并提供了示例及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

描述

使用

说明

示例

注意事项

移动不存在的文件

移动的目标路径不存在

移动的目标路径存在同名文件

将文件移动到仓库外


描述

不像其它的 VCS 系统,Git 并不显式跟踪文件移动操作。 如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。 不过 Git 非常聪明,它会推断出究竟发生了什么。

使用

使用 git mv 命令可以将一个文件或者目录移动到另一处,或者实现更名。

git mv <path> <target_path>
path文件的当前路径
target_path文件的目标路径


 

说明

git mv命令其实就是 mv 命令与git add命令的集合。例如将system目录下的login.py移动到user目录下:

git mv system/login.py user/login.py

这与下面的命令效果一致:

mv system/login.py user/login.py
git add user/login.py

示例

将本地仓库中的readmd_en.md修改为readme.md:

$ ll
total 0
drwxr-xr-x    4 liushuochen  staff   128 11 15 15:08 ./
drwxr-xr-x+ 124 liushuochen  staff  3968 11 15 15:09 ../
drwxr-xr-x   12 liushuochen  staff   384 11 15 15:09 .git/
-rw-r--r--    1 liushuochen  staff     0 11 15 15:08 readme_en.md
$ git mv readme_en.md readme.md
$ ll
total 0
drwxr-xr-x    4 liushuochen  staff   128 11 15 15:10 ./
drwxr-xr-x+ 124 liushuochen  staff  3968 11 15 15:10 ../
drwxr-xr-x   12 liushuochen  staff   384 11 15 15:10 .git/
-rw-r--r--    1 liushuochen  staff     0 11 15 15:08 readme.md
$ git commit -m "modify readmd_en.md to readmd.md"
[master aa02620] modify readmd_en.md to readmd.md
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename readme_en.md => readme.md (100%)

注意事项

移动不存在的文件

当移动一个不存在的文件时,git mv命令报错:fatal: bad source

$ git mv a.txt b.txt
fatal: bad source, source=a.txt, destination=b.txt

移动的目标路径不存在

当要移动的目标路径不存在时,git mv报错destination directory does not exist。

例如,文件结构如下的项目中,把最外层的readme.md移动到config目录下(一个不存在的目录):

$ tree .
.
├── conf
│   └── readme.md
└── readme.md

1 directory, 2 files
$ git mv readme.md config/
fatal: destination directory does not exist, source=readme.md, destination=config/

移动的目标路径存在同名文件

当要移动的目标路径存在与要移动的文件同名文件时,git mv报错 destination exists。

例如,文件结构如下的项目中,把最外层的readme.md移动到conf目录下:

$ tree .
.
├── conf
│   └── readme.md
└── readme.md

1 directory, 2 files
$ git mv readme.md conf/
fatal: destination exists, source=readme.md, destination=conf/readme.md

将文件移动到仓库外

将仓库内的文件试图用git mv移动到仓库外,即使路径正确,git mv也仍然会报错:

$ git mv readme.md ../
fatal: '../' is outside repository

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值