Para fazer o Git registrar uma alteração de nome de arquivo que apenas modifica o uso de maiúsculas e minúsculas — como de readme.md para README.md —, execute git mv a partir do repositório no Terminal e, em seguida, verifique a alteração preparada com git status. Em muitos Macs, o formato APFS padrão preserva maiúsculas e minúsculas nos nomes de arquivo, mas não diferencia nomes por maiúsculas/minúsculas, portanto uma renomeação no Finder ou um mv comum pode deixar o Git incapaz de reconhecer a diferença. A Apple observa que o APFS também pode ser formatado como sensível a maiúsculas e minúsculas (case-sensitive), de modo que o comportamento depende do volume. Apple Developer: Files and directories
Renomear um arquivo rastreado com git mv
No Terminal, navegue até o repositório que contém o arquivo. Substitua os caminhos de exemplo abaixo pelos caminhos exatos atual e desejado. Colocar cada caminho entre aspas é uma boa prática caso o nome contenha espaços ou metacaracteres do shell.
git mv 'src/readme.md' 'src/README.md'
git status
O comando git mv do Git renomeia o caminho na árvore de trabalho (working tree) e atualiza o índice; a alteração é preparada (staged), mas ainda precisa de um commit. O manual do Git exige que o caminho de origem exista e descreve que a atualização do índice ocorre após uma movimentação bem-sucedida. O fluxo de trabalho de linha de comando documentado pelo GitHub também recomenda verificar o git status após o git mv. git-mv documentation GitHub Docs: Renaming a file
Se for bem-sucedido, inspecione a saída do status para verificar se há uma renomeação preparada do caminho antigo para o novo. Revise toda a alteração preparada antes de fazer o commit, especialmente se você também editou o arquivo:
git diff --cached --summary
git diff --cached -- 'src/README.md'
O resumo ajuda a confirmar a alteração do caminho; o segundo comando permite que você inspecione o conteúdo preparado para esse caminho. O Git pode exibir uma renomeação como uma exclusão e uma adição em alguns contextos, pois a apresentação da renomeação é inferida a partir do conteúdo do arquivo e do histórico. A verificação essencial aqui é garantir que o índice contenha o caminho desejado e nenhuma alteração preparada indesejada.
Se uma renomeação direta apenas de maiúsculas/minúsculas falhar
Alguns volumes que não diferenciam maiúsculas de minúsculas ou certas configurações do Git não aceitam uma movimentação direta cuja origem e destino diferem apenas pelas maiúsculas/minúsculas. Use um nome temporário com uma grafia diferente e, em seguida, mova esse caminho temporário para o nome final:
git mv 'src/readme.md' 'src/readme-case-tmp.md'
git mv 'src/readme-case-tmp.md' 'src/README.md'
git status
O caminho temporário não deve existir previamente. Após ambos os comandos, confirme se o status mostra apenas a renomeação pretendida do antigo para o novo e verifique o diff preparado. O método de duas etapas fornece ao sistema de arquivos um nome intermediário para diferenciação, enquanto o git mv atualiza o índice do Git em cada etapa bem-sucedida. Se algum dos comandos relatar um erro, pare e inspecione o git status e o diretório antes de tentar novamente; não adicione -f a menos que tenha confirmado que sobrescrever o destino é intencional.
Verificar o tratamento de maiúsculas e minúsculas no repositório
A configuração core.ignoreCase do Git habilita soluções alternativas para sistemas de arquivos que não diferenciam maiúsculas de minúsculas. O Git documenta que o clone e o init sondam o sistema de arquivos e definem esse valor quando apropriado; ele também alerta que alterá-lo pode causar comportamentos inesperados. Você pode inspecionar a configuração efetiva com: git-config documentation
git config --get core.ignoreCase
Se nenhum valor for exibido, esse comando não encontrou uma configuração ativa. Evite tratar git config core.ignoreCase false como a solução: isso altera as suposições do Git, mas não faz com que um volume do macOS sem diferenciação de maiúsculas e minúsculas consiga armazenar dois nomes no mesmo diretório que diferem apenas pelas maiúsculas/minúsculas. O objetivo documentado da configuração é ajudar o Git a lidar com o comportamento real do sistema de arquivos, e não mudar esse comportamento.
Confirmar, fazer o commit e compartilhar a renomeação
Antes de fazer o commit, verifique a grafia final em git status, inspecione o resumo preparado e certifique-se de que alterações não relacionadas não foram incluídas. Quando a renomeação preparada estiver correta, faça o commit com uma mensagem clara:
git commit -m "Rename readme file to uppercase"
Se pretender compartilhar o commit, envie a branch com push usando o fluxo de trabalho comum de repositório remoto e branches. A renomeação é gravada no commit; um repositório remoto a receberá apenas após você realizar o push. Em um volume APFS sensível a maiúsculas e minúsculas, nomes que diferem apenas por maiúsculas/minúsculas podem ser distintos, enquanto a configuração padrão sem distinção os trata como o mesmo nome. A verificação local confiável continua sendo confirmar que o índice do Git e o status preparado exibem o caminho de destino pretendido. Apple Support: File system formats available in Disk Utility on Mac
Fontes
git-mv — Git
git-config — Git
Files and directories — Apple Developer
Renaming a file — GitHub Docs
File system formats available in Disk Utility on Mac — Apple Support