Git(MacOS)区分大小写的覆盖问题

时间:2014-08-29 20:05:13

标签: git

我在一个拥有混合Linux / MacOS开发人员的团队中工作。 MacOS不区分大小写,而Linux区分大小写。我有以下问题:

我的(MacOS)机器:

$ git checkout master
$ echo hi > MyModule.js
$ git commit -a -m 'Create MyModule.js'
$ git push origin master
$ git checkout -b other-work
... (do work)

Coworker(Linux)机器

$ git checkout master
$ git pull
$ git mv MyModule.js myModule.js
$ git commit -m 'Rename MyModule.js to myModule.js'
$ git push

我的(MacOS)机器

# Currently on branch other-work
$ git fetch
$ git checkout origin/master
error: The following untracked working tree files would be overwritten by checkout:
    MyModule.js
# In order to resolve the issue, I have to resort to hackery:
$ rm MyModule.js
$ git checkout origin/master
$ git checkout -- myModule.js   # Restore the rm'd file

我真的很想避免所有这些hackery。我希望我的MacOS git知道文件名中的大小写更改,以便我可以自由地在分支之间切换。我已经尝试将ignorecase配置值设置为true和false,但这没有帮助。

3 个答案:

答案 0 :(得分:2)

他们是我绕过这是一个格式化为区分大小写的分区。

这是我所有开发站点的服务地点。

答案 1 :(得分:0)

当切换分支时git checkout --force做我想要的但是有点危险。

来自git docs:

   -f, --force
       When switching branches, proceed even if the index or the working tree differs from HEAD. This is used to throw away local changes.

       When checking out paths from the index, do not fail upon unmerged entries; instead, unmerged entries are ignored.

答案 2 :(得分:0)

根据建议,macOS使用不区分大小写的文件系统。但是,这仅适用于默认卷。要解决此问题,请在macOS计算机上创建另一个区分大小写的卷,并在其中存储共享代码。或者,在您的组织内进行标准化,以使区分大小写的文件不再成为问题。

要在Mac上快速创建一个卷,以便在内部等待标准讨论时不会被阻塞,请访问 Disk Utility 并创建一个新的区分大小写的卷,例如:

Linux Share

这至少会使您动起来,因此您的环境将像您的同事一样工作,并且您所看到的错误将不再发生。