Git忽略大小写和修改文件名中大小写

时间:2021-09-14 00:50:22

转载请标明出处:http://blog.csdn.net/xx326664162/article/details/51523358 文章出自:薛瑄的博客

你也可以查看我的其他同类文章,也会让你有一定的收货!

我们在平时的开发过程中,可能会需要更改文件名称的大小写,但是改好后,在Git中没有任何反应,使用git status时,如果遇到下面情况,说明GIT大小写不敏感,如下:

[rock@ROCK-PC]$ /d/WampServer/www/hexu.org/code (dev)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.

nothing to commit, working directory clean

git对文件内的大小写是敏感的

如何解决Git的对文件名大小不敏感问题呢?

方案一:设置Git大小写敏感(不推荐):

$ git config core.ignorecase false

使用这种方法会造成一个问题:

分支 文件名
B TEST.txt
A test.txt

在分支B使用了$ git config core.ignorecase false命令,并且手动把文件名改为TEST.txt,这时候再想回到分支A,就会出现如下错误:

he@he-PC MINGW64 /f/StudioProjects/artandroidclient (B)
$ git checkout A
error: The following untracked working tree files would be overwritten by checkout:
artandroidclient/src/main/java/cn/hdnc/artandroidclient/test.txt

Please move or remove them before you can switch branches.
Aborting

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

找了半天,没有找到两全其美的办法
http://*.com/questions/4858047/the-following-untracked-working-tree-files-would-be-overwritten-by-checkout

方案二:重命名文件(推荐):

第一种方法(推荐):

git mv A B 重命名A为B

如果直接将大写名称改为小写,由于此时git是大小写不敏感的,所以不会修改。如下所示:

he@XueXuan-PC MINGW64 /f/StudioProjects/artandroidclient (master)
$ git mv artsdk/src/main/java/cn/hdnc/ArtSDK artsdk/src/main/java/cn/hdnc/artsdk
Rename from 'artsdk/src/main/java/cn/hdnc/ArtSDK' to 'artsdk/src/main/java/cn/hdnc/artsdk/ArtSDK' failed. Should I try again? (y/n) n
fatal: renaming 'artsdk/src/main
/java/cn/hdnc/ArtSDK' failed: Permission denied

先把文件名称改为其他的,再改为指定的文件名。如下所示:


he@XueXuan-PC MINGW64 /f/StudioProjects/artandroidclient (master)
$ git mv artsdk/src/main/java/cn/hdnc/ArtSDK artsdk/src/main/java/cn/hdnc/art

he@XueXuan-PC MINGW64 /f/StudioProjects/artandroidclient (master)
$ git mv artsdk/src/main/java/cn/hdnc/ArtSDK artsdk/src/main/java/cn/hdnc/artsdk
fatal: bad source, source=artsdk/src/main/java/cn/hdnc/ArtSDK, destination=artsdk/src/main/java/cn/hdnc/artsdk

he@XueXuan-PC MINGW64 /f/StudioProjects/artandroidclient (master)
$ git mv artsdk/src/main/java/cn/hdnc/art artsdk/src/main/java/cn/hdnc/artsdk

第二种方法:

运行 git mv 就相当于运行了下面三条命令(详情):

$ mv README.md README
$ git rm README.md
$ git add README

所以也可以自己去运行这些命令,到达git mv的效果

在使用git rm 命令时,先备份数据!!!

$ git rm ; git add  ;  git commit -m "rename file"

由于我是与大家共用的仓库,所以我采用的方案2解决掉了。

$ git rm code/library/BuildTag*.php; git status
On branch dev
Changes to be committed:
(use "git reset HEAD ..." to unstage)

deleted: code/library/BuildTagAfc.php
deleted: code/library/BuildTagAfs.php

rock@ROCK-PC /d/WampServer/www/hexu.org/code (dev)
$ git add code/library/BuildTag*.php; git status
On branch dev
Changes to be committed:
(use "git reset HEAD ..." to unstage)

renamed: code/library/BuildTagAfc.php -> code/library/BuildTagafc.php
renamed: code/library/BuildTagAfs.php -> code/library/BuildTagafs.php

参考:http://ju.outofmemory.cn/entry/95443