本文共 1918 字,大约阅读时间需要 6 分钟。
目录
不像其它的 VCS 系统,Git 并不显式跟踪文件移动操作。 如果在 Git 中重命名了某个文件,仓库中存储的元数据并不会体现出这是一次改名操作。 不过 Git 非常聪明,它会推断出究竟发生了什么。
使用 git mv 命令可以将一个文件或者目录移动到另一处,或者实现更名。
git mv
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.pygit add user/login.py
将本地仓库中的readmd_en.md修改为readme.md:
$ lltotal 0drwxr-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$ lltotal 0drwxr-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.txtfatal: bad source, source=a.txt, destination=b.txt
当要移动的目标路径不存在时,git mv报错destination directory does not exist。
例如,文件结构如下的项目中,把最外层的readme.md移动到config目录下(一个不存在的目录):
$ tree ..├── conf│ └── readme.md└── readme.md1 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.md1 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
转载地址:http://xcsoi.baihongyu.com/