Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在OSX上正确更改Git中的文件名大小写_Git_Macos - Fatal编程技术网

如何在OSX上正确更改Git中的文件名大小写

如何在OSX上正确更改Git中的文件名大小写,git,macos,Git,Macos,在具有此文件系统的OSX 10.10.2和Git 2.2.1上: 文件系统个性:日志HFS+ 类型(束):hfs 名称(用户可见):Mac OS扩展版(日志) 我看到了与此相关的几个问题和答案: 该问题的实际解决方案没有明确规定,但涉及: 在将该选项设置为true后,我花了一些时间分解文件历史记录(删除和重新添加文件)来解决此错误 我已经尝试了其他解决方案,但我仍然面临如何正确移动文件的问题 已运行: sudo git config --unset-all core.ignorecase &a

在具有此文件系统的OSX 10.10.2和Git 2.2.1上: 文件系统个性:日志HFS+ 类型(束):hfs 名称(用户可见):Mac OS扩展版(日志)

我看到了与此相关的几个问题和答案:

该问题的实际解决方案没有明确规定,但涉及:

在将该选项设置为true后,我花了一些时间分解文件历史记录(删除和重新添加文件)来解决此错误

我已经尝试了其他解决方案,但我仍然面临如何正确移动文件的问题

已运行:

sudo git config --unset-all core.ignorecase && sudo git config --system core.ignorecase false
然后,我仍然无法使用(git 2.2.1)重命名文件,因为我得到一个
fatal:destination exists
error:

git mv File.name file.name
我可以使用以下命令重命名它们:

git mv File.name File.name.tmp
git mv File.name.tmp file.name
但是,我无法签出较旧的提交/分支,因为我收到以下消息:

error: The following untracked working tree files would be overwritten by merge:
File.name
error: The following untracked working tree files would be overwritten by merge:
file.name
如果我强制签出或将ignorecase更改为true,我可以切换分支,但是我仍然无法合并更改,因为我收到以下消息:

error: The following untracked working tree files would be overwritten by merge:
File.name
error: The following untracked working tree files would be overwritten by merge:
file.name
请注意,在这两条错误消息中,冲突文件名的大小写发生了变化。运行
git reset--hard HEAD
无法解决这两种情况下的问题

这是git中的bug吗?我做错了吗?我看无论如何都不会强制合并,我还能做什么?是否必须删除并重新添加该文件,从而中断该文件的更改历史

编辑:
到目前为止,似乎唯一的解决方案(保留文件历史记录,不需要通过重写项目历史来破坏旧版本)是将重命名分为两次提交,然后要求合并此分支的任何人手动合并两次。

我使用Mac OSX,而对于我的大部分Git工作,我使用。我只是尝试在那里重命名一个文件,方法是右键单击要重命名的未老化文件,选择“移动”选项,然后重命名该文件并将其保留在当前位置。这对我有用。我希望这有帮助。评论任何后续问题

编辑:根据注释请求添加
diskutil info/
的结果: BELC02NF206G3QN:~jthoms$diskutil信息/ 设备标识符:disk1 设备节点:/dev/disk1 全部的一部分:disk1 设备/媒体名称:Macintosh HD

Volume Name:              Macintosh HD

Mounted:                  Yes
Mount Point:              /

File System Personality:  Journaled HFS+
Type (Bundle):            hfs
Name (User Visible):      Mac OS Extended (Journaled)
Journal:                  Journal size 24576 KB at offset 0x19502000
Owners:                   Enabled

Content (IOContent):      Apple_HFS
OS Can Be Installed:      Yes
Recovery Disk:            disk0s3
Media Type:               Generic
Protocol:                 PCI
SMART Status:             Not Supported
Volume UUID:              D2FB2CB7-9CA8-38D1-9116-AA88AFC39748
Disk / Partition UUID:    01D2D5C8-8300-4FE6-9ED5-07C5D4C0879D

Total Size:               249.8 GB (249795969024 Bytes) (exactly 487882752 512-Byte-Units)
Volume Free Space:        27.0 GB (27011723264 Bytes) (exactly 52757272 512-Byte-Units)
Device Block Size:        512 Bytes
Allocation Block Size:    4096 Bytes

Read-Only Media:          No
Read-Only Volume:         No
Ejectable:                No

Whole:                    Yes
Internal:                 Yes
Solid State:              Yes
OS 9 Drivers:             No
Low Level Format:         Not supported

This disk is a Core Storage Logical Volume (LV).  Core Storage Information:
LV UUID:                  01D2D5C8-8300-4FE6-9ED5-07C5D4C0879D
LVF UUID:                 AC10903C-43BB-403E-BD90-F7BF785DF8AC
LVG UUID:                 B0718DFB-82C0-402C-836E-DD3B32E5EEDC
Fusion Drive:             No
Encrypted:                Yes

你能做一些像移动,做一个实际的提交,然后向后移动,做一个实际的提交吗?git尝试将所有差异合并到一个提交中,因此如果您在不同的位置进行rm和add,git只会将其视为一个移动…@GradyPlayer将两个移动拆分为两个提交并不能解决问题。我仍然收到未跟踪的工作树文件错误。@GradyPlayer我可以合并第一次提交,然后合并第二次提交,但这也是非常次优的。我担心,如果我将此代码推送到源代码,尝试从源代码拉取的人将不得不手动从源代码进行两次合并,以使其本地分支加快速度。我们可能不会丢失文件历史记录,但这给存储库带来了一个奇怪而神秘的问题。我在disk Utility中创建了一个区分大小写的磁盘映像,并在那里处理了一个在OS X上处理区分大小写项目的一般问题。从项目中删除文件系统区分大小写是权宜之计。@Schwern但这难道不意味着每个试图创建工作副本的开发人员都将无法合并此分支,除非他们也创建区分大小写的磁盘映像?我认为您不理解这个问题,这是重命名仅涉及更改文件名大小写的文件。使用SourceTree的“移动”功能会产生错误“致命:目标存在”。。。当尝试使用“git mv file.name file.name”重命名文件时,也会出现这种情况。对我来说,我在同一个目录中将PricingExecutor.java重命名为PricingExecutor.java,它工作得很好-commit、
ls
等等。正如我所说的,我使用了SourceTree的移动选项,它起了作用。我想知道是否存在非Git问题。您是否可以通过mv命令或类似命令在命令行中重命名文件以使用不同的大小写?是的,我可以使用mv重命名文件,因为OSX是“保留大小写”的,但不区分大小写。问题似乎在于Git如何跟踪工作目录被移动弄糊涂了,并认为有一个未跟踪的文件,而没有。OSX 10.10.5 Git版本2.5.4(Apple Git-61)
diskutil info/
结果添加到上面的答案编辑中。