转载请标明出处: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