Como fazer o git ignorar mudanças no caso?

106

Não tenho certeza do que está acontecendo aqui, mas às vezes um arquivo específico em meu repositório muda a caixa do seu nome. por exemplo,:

antes: File.h

depois de: file.h

Eu realmente não me importo por que isso está acontecendo, mas isso faz com que o git pense que é um novo arquivo, e então eu tenho que mudar o nome do arquivo de volta. Você pode simplesmente fazer o git ignorar as mudanças de maiúsculas e minúsculas?

[editar] Suspeito que seja o Visual Studio fazendo algo estranho com aquele arquivo em particular, porque parece acontecer com mais frequência quando eu o abro e salvo após alterações. Não tenho como consertar bugs no VS entretanto, mas o git deve ser um pouco mais capaz, espero.

1800 INFORMAÇÕES
fonte
1
Re: Visual Studio salvando arquivos em letras minúsculas Qual versão do Visual Studio você está usando? A última vez que verifiquei, parecia estar melhor na versão 2008. Em 2005, o bug parecia ocorrer quando os arquivos eram abertos por meio do depurador em vez do explorador de soluções.
Adam Mitz,
Na verdade, sim, estamos em 2005. Sem chance de um upgrade por um tempo.
1800 INFORMAÇÕES

Respostas:

177

Desde a versão 1.5.6, há uma ignorecaseopção disponível na [core]seção de.git/config

por exemplo, adicionar ignorecase = true

Para alterá-lo para apenas um repo, execute a partir dessa pasta:

git config core.ignorecase true

Para mudá-lo globalmente:

git config --global core.ignorecase true
MarkB
fonte
21
git config core.ignorecase true ou git config --global core.ignorecase true para aplicar globalmente.
Aaron Jensen,
@graywh: Está documentado em git-config em core.ignorecase ( kernel.org/pub/software/scm/git/docs/git-config.html )
Ben Lings
4
Obrigado, eu finalmente descobri por que o git não estava levando em consideração minhas alterações de caso. ignorecase = falsefuncionou, foi padronizado para true-_-
Alex C
15

Você pode forçar o git a renomear o arquivo apenas com maiúsculas e minúsculas com este comando:

git mv --cached name.txt NAME.TXT

Note que isso não muda o caso do arquivo em sua cópia em check-out em uma partição do Windows, mas git registra a mudança de caixa e você pode enviar essa mudança. Checkouts futuros usarão o novo invólucro.

Andrew Arnott
fonte
1
"erro: opção desconhecida` em cache '. " Também não está listado nos documentos: git-scm.com/docs/git-mv
Alex
12

No git versão 1.6.1.9 para Windows, descobri que "ignorecase = true 'na configuração já estava definido por padrão.

John C
fonte
7
Sim, e quando você trabalha com arquivos Java, você deseja que esta configuração seja definida como falsa, caso contrário, você pode ter problemas ao fazer essa refatoração (classe HTMLParser se tornando HtmlParser ou o contrário).
PhiLho
o mesmo para git versão 2.10.1.windows.1
Kars Barendrecht
3
Eu sei que isso é antigo, mas não faz sentido no Windows definir ignorecase como false, pois o Windows é um sistema operacional que não diferencia maiúsculas de minúsculas. Isso se aplica se você está trabalhando com Java ou (suspiro!) C # ou qualquer outra coisa.
ingyhere
5

A situação descrita na pergunta agora está ocorrendo novamente com o Mac OS X, versão git> = 1.7.4 (eu acho). A cura é definir seu ignorecase = false e renomear os arquivos em minúsculas (que o git mudou dessa forma, não o Visual Studio) de volta para seu UsualCase manualmente (ou seja, 'mv myname MyName').

Mais informações aqui .

akauppi
fonte