55d814513cbc9b7891face8066721f6b.png

问题

直接修改了文件名或文件夹名时,git 会判定为删除该文件或文件夹,然后添加 untracked 的文件或文件夹,如此导致对应的文件或文件夹的修改历史丢失。

解决方案 -> git mv

git mv 介绍

移动或重命名文件,目录或符号链接。

描述
git mv [-v] [-f] [-n] [-k] <source> 
git mv [-v] [-f] [-n] [-k] <source> ...

在第一种形式中,它将  重命名为  ,它必须存在,并且可以是文件,符号链接或目录。
在第二种形式中,最后一个参数必须是现有目录; 给定的源都将被移动到目标目录中。

PS: 成功完成后更新索引,但仍必须提交更改。

选项

-f--force
即使目标存在,也要强制重命名或移动文件

-k
跳过移动或重命名会导致错误情况的操作。当源既不存在也不受 Git 控制时,或者除非-f给出,否则会覆盖现有文件时发生错误。

-n--dry-run
没做什么; 只显示会发生什么

-v--verbose
报告移动文件的名称。

例子
  1. 重命名文件

     git mv -f 桌面端-面试题.md desktop_interview.md
  2. 更新追踪历史(无该步骤将导致历史丢失)

     git add -u desktop_interview.md
  3. 提交修改

     git commit -m "rename file test"
Tips
git mv -f oldfolder newfolder
# (-u选项会更新已经追踪的文件和文件夹)
git add -u newfolder
git commit -m "changed the foldername whaddup"
# (在大小写不敏感的系统中,如windows,重命名文件的大小写,使用临时文件名)
git mv foldername tempname && git mv tempname folderName
# (显示重命名会发生的改变,不进行重命名操作)
git mv -n foldername folderName

3a026ab41757c9e4c65b55cc6c7048b8.png长按扫描阅读原文b102a26892443aaf61f2c72653c8b626.png

08a75b54b5c220d72d769dfc08136368.png


欢迎志同道合的朋友

能够关注或者加入我们实验室

让我们一起快乐的搞科研开发


知行合一,困知勉行

欢迎关注零星实验室

6e2151d9a793748114f18412e2388550.png

感谢关注零星实验室


Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐