Como fazer alterações em nomes de arquivos apenas com diferenciação de maiúsculas e minúsculas no Git?

Eu mudei o nome de vários arquivos dividindo a primeira letra, como em Name.jpg , em Name.jpg . O Git não reconhece essas mudanças, e eu tive que deletar os arquivos e enviá-los novamente. Existe uma maneira que o git possa diferenciar maiúsculas de minúsculas ao verificar alterações nos nomes dos arquivos? Eu não fiz nenhuma alteração no arquivo em si.

930
16 июля '13 в 20:41 2013-07-16 20:41 Gil Shulman perguntou em 16 de julho '13 às 20:41 2013-07-16 20:41
@ 11 respostas

Você pode usar o git mv :

 git mv -f OldFileNameCase newfilenamecase 
1144
03 янв. Respondida por Keith Smiley em jan 03 2014-01-03 18:57 '14 às 18:57 2014-01-03 18:57

O Git tem um parâmetro de configuração que informa se deve ser sensível a maiúsculas ou insensível: core.ignorecase . Para dizer ao Git o valor do caso sensitivo, simplesmente configure este parâmetro como false :

 git config core.ignorecase false 

Documentação

Da documentação do git config :

border=0

core.ignorecase

Se true, essa opção permite usar várias soluções alternativas para que o Git funcione melhor em sistemas de arquivos que não diferenciam maiúsculas de minúsculas, como FAT. Por exemplo, se a listagem de diretórios detecta um makefile , quando o Git espera um makefile , o Git assumirá que é de fato o mesmo arquivo e continuará a lembrá-lo como um makefile .

O valor padrão é false, exceto que git -clone (1) ou git -init (1) irá verificar e setar core.ignorecase true se necessário ao criar um repositório.

Sistemas de arquivos insensíveis a maiúsculas e minúsculas

Os dois sistemas operacionais mais populares que não possuem sistemas de arquivos que não diferenciam maiúsculas de minúsculas que eu sei que são

  • para janelas
  • OS X
754
17 июля '13 в 1:52 2013-07-17 01:52 a resposta é dada por user456814 17 de julho '13 às 1:52 2013-07-17 01:52

Foi o que fiz no OS X:

 git mv File file.tmp git mv file.tmp file 

Dois passos, porque senão recebi um erro "arquivo existe". Talvez isso possa ser feito em uma única etapa, adicionando - em --cached ou algo semelhante.

93
13 нояб. Resposta dada por Sijmen Mulder 13 de nov 2013-11-13 17:27 '13 às 17:27 2013-11-13 17:27

Usando o SourceTree, consegui fazer tudo isso a partir da interface do usuário.

  • Renomeie FILE.ext para whatever.ext
  • Palco
  • Agora renomeie whatever.ext para FILE.ext
  • Repita este arquivo novamente.

É um pouco tedioso, mas se você só precisa fazer alguns arquivos, é bem rápido.

87
28 окт. Resposta dada por Chris Barr 28 de out 2016-10-28 17:40 '16 às 17:40 2016-10-28 17:40

No OSX, você pode usar o Utilitário de Disco para criar uma imagem de disco / imagem de disco rígido para evitar esse problema e evitar outros problemas com o desenvolvimento do sistema de arquivos sem a falta de sensibilidade.

Execute o utilitário de disco, crie uma nova imagem de disco e use as seguintes configurações (ou altere-a conforme desejar, mas salve-a com distinção entre maiúsculas e minúsculas):

2019

37
03 окт. a resposta é dada por user1821510 03 oct. 2014-10-03 22:18 '14 às 22:18 2014-10-03 22:18

Às vezes, é útil alterar temporariamente a diferenciação entre maiúsculas e minúsculas no Git. Dois métodos possíveis:

Método 1:

git -c core.ignorecase=true checkout mybranch para desativar a git -c core.ignorecase=true checkout mybranch de maiúsculas e minúsculas para um único comando de checkout . Ou mais geralmente: git -c core.ignorecase= <<true or false>> <<command>> . (Obrigado ao VonC por sugerir isso nos comentários.)

Método 2:

Para alterar uma configuração por um período mais longo (por exemplo, se você precisar executar vários comandos antes de alterá-lo novamente):

  1. git config core.ignorecase (retorna as configurações atuais, por exemplo, false ).
  2. git config core.ignorecase <<true or false>> - define o novo parâmetro desejado.
  3. ... Execute vários outros comandos ...
  4. git config core.ignorecase <<false or true>> - retorna o valor da configuração para o valor anterior.
15
10 июля '18 в 14:05 2018-07-10 14:05 respondeu a Steve Chambers 10 de julho, '18 às 2:05 pm 2018-07-10 14:05

1) Renomeie o arquivo name1.jpg para name1.jpg

2) corrigir o arquivo excluído Name.jpg

3) renomeie o arquivo name1.jpg para Name.jpg

4) adicione o arquivo Name.jpg adicionado ao commit anterior

 git add git commit --amend 
14
03 окт. resposta dada razon 03 oct. 2016-10-03 22:13 '16 às 22:13 2016-10-03 22:13

Eu tentei as seguintes soluções das outras respostas e elas não funcionaram:

Se o seu repositório estiver hospedado no GitHub, como o meu, você pode renomear o arquivo na fonte (GitHub.com) e forçar a renomeação do arquivo de cima para baixo.

As instruções abaixo dependem do tipo de arquivo que você está tentando renomear, ou seja, o tipo de arquivo que o GitHub considera editável (código, texto, etc.) ou não editável (imagem, binário, etc.) em um navegador. .

  1. Visite o GitHub.com
  2. Vá para o seu repositório no GitHub.com e selecione o ramo em que você trabalha
  3. Usando a ferramenta de navegação de arquivos do site, navegue até o arquivo que você deseja renomear.
  4. O GitHub permite editar um arquivo em um navegador?
    • a.) editável
      1. Clique no ícone "Editar este arquivo" (parece um lápis)
      2. Alterar o nome do arquivo na entrada do nome do arquivo de texto
    • b) não editável
      1. Abra o botão "Download" em uma nova aba e salve o arquivo no seu computador.
      2. Renomeie o arquivo baixado
      3. Na guia anterior no GitHub.com, clique no ícone "Excluir este arquivo" (parece uma lixeira)
      4. Certifique-se de que o botão de opção "Gravar diretamente para branchname ramificação" esteja selecionado e clique no botão "Confirmar alterações".
      5. No mesmo diretório no GitHub.com, clique em "Upload Files"
      6. Baixe o arquivo renomeado do seu computador
  5. Certifique-se de que o botão de opção "Gravar diretamente para branchname ramificação" esteja selecionado e clique no botão "Confirmar alterações".
  6. Localmente, emitir / receber / puxar um ramo
  7. Está feito
8
31 окт. a resposta é dada por gmeben em 31 de outubro 2017-10-31 21:22 '17 às 21:22 2017-10-31 21:22

O Mac OSX High Sierra 10.13 corrige isso um pouco. Basta criar uma partição APFS virtual para seus projetos git, por padrão, ela não tem limite de tamanho e não ocupa espaço.

  1. No Utilitário de Disco, clique no botão + quando o Disco do contêiner estiver selecionado.
  2. Selecione APFS (-s obrigatório) no formato
  3. Chame-o Sensitive
  4. lucro
  5. Opcional: Crie uma pasta em Sensitive com o nome git e ln -s/Volumes/Sensitive/git/Users/johndoe/git

Sua unidade estará em /Volumes/Sensitive/

2019

Eu encontrei esse problema várias vezes no MacOS. O Git é sensível a maiúsculas e minúsculas, mas o Mac mantém apenas o caso.

Alguém corrige o arquivo: Foobar.java e depois de alguns dias decide renomeá-lo para Foobar.java . Quando você retira o código mais recente, ele falha com o The following untracked working tree files would be overwritten by checkout...

A única maneira confiável de ver essa correção é:

  • git rm Foobar.java
  • Proteger com uma mensagem que você não pode pular git commit -m 'TEMP COMMIT!!'
  • Trailed
  • Isso causará um conflito que o forçará a mesclar o conflito - porque sua alteração o excluiu, mas a outra alteração foi renomeada (daí o problema).
    • Aceite sua alteração, que é "excluir"
    • git rebase --continue
  • Agora, deixe sua solução git rebase -i HEAD~2 e drop TEMP COMMIT!!
  • Confirme se o arquivo agora é chamado de Foobar.java
3
05 авг. Resposta dada por Ashwin Jayaprakash 05 ago 2016-08-05 20:23 '16 às 20:23 2016-08-05 20:23

Quando você faz muita renomeação de arquivos, e alguns deles estão apenas substituindo o caso, é difícil lembrar o que é. manualmente "git relocation", o arquivo pode ser bastante útil. Então, o que eu faria no processo de alterar o nome do arquivo, siga estas etapas:

  • delete todos os arquivos e pastas sem git para outra pasta / repositório.
  • corrija a pasta git atual vazia (isso será exibido quando todos os arquivos forem excluídos).
  • adicione todos os arquivos de volta à pasta de origem git / repository.
  • corrija a pasta git não vazia atual.

Isso eliminará todos os problemas, não tentando determinar quais arquivos ou pastas foram renomeados.

2
29 апр. Resposta dada por Ricardo Virtudazo Jr 29 de abril 2017-04-29 14:00 '17 às 14h de 2017-04-29 14:00

Outras questões sobre tags ou Ask a Question