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

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

  1. 在新建代码文件时,不注意把文件名应该小小写搞错了
  2. 文件已经push到远程了
  3. 在windows下面将文件名字改为全小写

改好后,在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://stackoverflow.com/questions/4858047/the-following-untracked-working-tree-files-would-be-overwritten-by-checkout

方案二:先删除文件,再添加进去(推荐):

在使用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

你可能感兴趣的:(git,大小写)