Re: Git an case-insensitive Mac OS X filesystem
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:43
Roger Pau Monné [off-list ref] writes:
Hello, I'm using git for all my projects, and I usually work under Mac OS X with the default filesystem (that's case-insensitive, but case-preserving). I'm currently working on a project that has several branches, and two of them are called origin/DHCPCD and origin/dhcpcd respectively, that's unfortunate, but I cannot do anything about it. This completely breaks the git repository, because .git/refs/remotes/origin/DHCPD and .git/refs/remotes/origin/dhcpd are actually the same file, so when I try to update my repository performing a git pull I get the following error: error: Ref refs/remotes/origin/dhcpcd is at 6b371783de2def2d6e3ec2680ba731f7086067ee but expected 79f701ce599a27043eed8343f76406014963278a So I was wondering if anyone has stumbled upon this issue, and what's the best approach to fix it.
If "several" is manageably small, you can configure your refspecs to
rename them, e.g.
[remote "origin"]
url = ...
fetch = +refs/heads/master:refs/remotes/origin/master
fetch = +refs/heads/dhcpcd:refs/remotes/origin/dhcpcd
fetch = +refs/heads/DHCPCD:refs/remotes/origin/dhcpcd-u
which tells
$ git fetch origin
to use your remote tracking branch origin/dhcpcd-u to copy from
their DHCPCD. Then you can work on it the usual way.
$ git checkout -b dhcpcd-u origin/dhcpcd-u
$ work work work
For pushing, you can rename it back in a similar way.
$ git push origin dhcpcd-u:DHCPCD
which is a short-hand for
$ git push origin refs/heads/dhcpcd-u:refs/heads/DHCPCD