如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

关于代码版本库的管理,早些年风光无线的svn被git所取代。而git基本上都是在命令行下使用的,所以就有了gui图形化工具,比如sourcetree。这款软件是非常好用的,推荐大家使用。本文中描述的事项是:当文件命名大小写错误后,git如何识别处理的问题。

背景描述

苏南大叔在调试thinkcmf的时候,新建了一个indexController.php文件,开发机(mac)能够正常识别出这个文件。但是部署上线后,却报错404。检查发现,这个indexController.php文件的首字母应该是大写。所以,这里需要对这个文件进行改名。然后提交到git仓库里面。

狗血的事情,就在这个时候发生了,在sourcetree里面,显示并没有文件可以提交!

解决方案一:修改当前仓库的git设置(不推荐)

在souretree里面,进入到当前项目后,点击右上角的设置按钮。然后切换到远程仓库的左下角的编辑配置文件按钮。在弹出的编辑器里面,找到ignorecase = true的字样,然后修改成为ignorecase = false之后,保存即可。

sourcetree/git如何识别文件名大小写变动 - 000

sourcetree/git如何识别文件名大小写变动(图15-1)

sourcetree/git如何识别文件名大小写变动 - 001

sourcetree/git如何识别文件名大小写变动(图15-2)

sourcetree/git如何识别文件名大小写变动 - 002

sourcetree/git如何识别文件名大小写变动(图15-3)

sourcetree/git如何识别文件名大小写变动 - 003

sourcetree/git如何识别文件名大小写变动(图15-4)

当然,上述config文件就是:存在于项目根目录下面的隐藏文件:/.git/config文件。所以,你也可以直接修改这个文件。

sourcetree/git如何识别文件名大小写变动 - 005

sourcetree/git如何识别文件名大小写变动(图15-5)

sourcetree/git如何识别文件名大小写变动 - 006

sourcetree/git如何识别文件名大小写变动(图15-6)

然后在sourcetree里面,就可以找到相关的提交信息了。但是这样操作后,在最终的仓库里面,文件存在着两个,新旧文件都是存在的。但是,在本地文件系统里面,却只有一个文件。所以,还是不推荐这样的操作的。

sourcetree/git如何识别文件名大小写变动 - 004

sourcetree/git如何识别文件名大小写变动(图15-7)

sourcetree/git如何识别文件名大小写变动 - git_repo_double

sourcetree/git如何识别文件名大小写变动(图15-8)

解决方案二:使用git命令强制改名提交(推荐)

此方案中,必须保持上面的配置:ignorecase = true。需要修改文件名大小写的时候,使用简单粗暴有效的下列命令:

git mv -f <错误的命名> <正确的命名>

这种情况下,再次提交的时候(sourcetree或者git commit),会提示有个文件名重命名的操作。

sourcetree/git如何识别文件名大小写变动 - git_2

sourcetree/git如何识别文件名大小写变动(图15-9)

当然,不通过sourcetree,而是通过命令提交也是可以的。

sourcetree/git如何识别文件名大小写变动 - git_3

sourcetree/git如何识别文件名大小写变动(图15-10)

git commit -m <信息注释>

在最终的仓库里面,就可以看到,已经改名成功了,只有一个最终的文件。

sourcetree/git如何识别文件名大小写变动 - 011

sourcetree/git如何识别文件名大小写变动(图15-11)

目录大小写改名(推荐)

上一小节的内容说的是普通文件的大小写改名,接着说明目录的大小写改名。目录的改名操作比较复杂一些,下面的范例中,原名称是Ajax,要改名的新名称是ajax

sourcetree/git如何识别文件名大小写变动 - git目录改名

sourcetree/git如何识别文件名大小写变动(图15-12)

这个步骤用git mv -f <老名称> <新名称>操作的话,要操作两次。用个临时名称tmp来做个过渡。否则就会报错。"Invalid argument"。

git mv -f <老名称> <临时名>
git mv -f <临时名> <新名称>

sourcetree/git如何识别文件名大小写变动 - git目录改名

sourcetree/git如何识别文件名大小写变动(图15-13)

sourcetree/git如何识别文件名大小写变动 - git目录改名2

sourcetree/git如何识别文件名大小写变动(图15-14)

如果这个目录下面还有其它文件的话,就更麻烦一些,直接提交的话,sourcetree会报错。错误信息是:already exists in index

要把这些内部文件“删除”,然后再“添加”进去。其实就是先移动到一个临时的外部目录,然后提交submit之后,再移动回来,再提交一次。有些麻烦是不?

sourcetree/git如何识别文件名大小写变动 - git目录改名3

sourcetree/git如何识别文件名大小写变动(图15-15)

总体上来说,就是git mv -f两次,移动该目录下面的文件两次,sourcetree提交两次。

结论

sourcetree的背后就是git,所以苏南大叔推荐您:要是sourcetree找不到解决方案的话,不妨试试从git的角度来看待这些问题。您说是吧?

更多sourcetree相关经验文章,请点击这里查看。https://newsn.net/tag/sourcetree/

  【sourcetree】秘籍文章入口,仅传授于有缘之人  sourcetree    git

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

打赏任意金额,发送截图到邮箱 shang@newsn.net ,可以领取精选回馈如下(任选其一):
  • 《前端视频教程大礼包》一套
  • 《wordpress精选皮肤》一套
  • 《dedecms织梦精选模板》一套
感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!

岁月静好

关注互联网发展,关注苏南大叔的《程序如此灵动~》博客
本文章来自:程序如此灵动~
博客地址为:https://newsn.net/
原文地址为:https://newsn.net/say/sourcetree-git-ignorecase.html
上一篇好文:mac系统,如何卸载自启动的creative cloud
下一篇好文:cmswing安装部署教程

如果您转载了本文章,出于某种原因,并没有注明作者或者出处。
在这里,苏南大叔也表示理解和支持。因为苏南大叔深深地明白:
您会在合适的时机,合适的地方,给本博客一个外链。对吧?
您若开心,便是安好!岁月静好,但愿世界和平,没有纷争~