【提前避坑记】文件进行重命名时,有坑!!!

git 默认是大小写不敏感!!!

加了感叹号是什么意思呢,意思就是这本身就是一个坑,本人使用的 IDE 是 idea(网上说 Eclipse 可以避开问题),这个 IDE 本身就集成了 git,但是如果要在 terminal 使用 git 命令,还需先安装并配置好 git 环境变量,然后在 idea 配置 git 安装路径...

扯远了,先说说这个坑,在 idea 上对文件大小写重命名时,比如 DataExt.java 改成 Dataext.java,git 是不会做辨认的,即使你看到的是 Dataext.java,等到你 push 到远程分支上去,你会发现分支上的还是 DataExt.java,这时别人要是 merge 你的分支或者 checkout 下来时,就报错啦。

如何避免?

哎,你上网一搜,都是说把 git 设置成大小写敏感 git config core.ignorecase false(其实这也是个坑)。。。。

我就分情况解决吧:

1、先说一下 git 大小写不敏感,也就是默认的情况下如何解决:
(建议默认)

使用命令:

git mv DataExt.xml Dataext.xml

ps:  文件夹重命名      git mv foldername tempname && git mv tempname folderName (在大小写不敏感的系统中,如 windows,重命名文件夹的大小写, 使用临时文件名)

此时暂存区的文件已改动

接下来 commit 到本地分支,最后 push 上远程分支

git commit -m '提交说明'
git push

使用 IDE 的可以操作界面提交并推送。

2、接下来要说那些设置了大小写敏感的怎么提交:
(不建议设置)

为什么说设置了大小写敏感也是个坑,因为假设

分支文件
ADataExt.java
BDataext.java

我在本地的分支 B 设置了 git config core.ignorecase false,并且文件是小写的 Dataext.java,接下来如果 merge 了分支 A 的话,会出现错误:

error: The following untracked working tree files would be overwritten by merge:DataExt.java

意思是:分支 A 中的 DataExt.java 将会重写分支 B 的文件

那这样的话,假设路人甲和乙都是使用分支 A 的,你 merge 他们,就会提示文件将被重写。。。坑啊!

解决方法都是将 core.ignorecase 设置为 true,然后再进行操作,那设置为 false 又有何意义?

哎。。。对于设置了大小写敏感的修改文件名大小写要怎么提交呢?

首先 记住 将你的文件备份!

然后删除

git rm DataExt.java

,将备份文件重命名 Dataext.java 放到路径下,添加

git add Dataext.java

提交

git commit -m '提交说明'

作者:Sam168666

链接:

https://www.cnblogs.com/samwang88/p/6611947.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值