Estou tentando renomear um arquivo para ter letras maiúsculas diferentes do que tinha antes:
git mv src/collision/b2AABB.js src/collision/B2AABB.js
fatal: destination exists, source=src/collision/b2AABB.js, destination=src/collision/B2AABB.js
Como você pode ver, o Git se encaixa nisso. Tentei renomear usando apenas o mv
comando antigo simples , mas o Git não escolhe a renomeação (como renomeação ou como um novo arquivo não rastreado).
Como posso alterar um arquivo para ter uma capitalização diferente com o mesmo nome? Estou no Mac OS X v10.7.3 (Lion) com Git 1.7.9.1 usando o shell Z (zsh) 4.3.15.
git
rename
case-sensitive
file-rename
knpwrs
fonte
fonte
git mv myfile foo; git mv foo MyFile
git mv hello.txt Hello.txt
funcionará no sistema operacional que não diferencia maiúsculas de minúsculas. Veja minha resposta abaixoRespostas:
A partir do Git 2.0.1 (25 de junho de 2014), a
git mv
funcionará apenas em um sistema operacional que não diferencia maiúsculas de minúsculas .Veja commit baa37bf de David Turner (
dturner-tw
) .mv
: permite renomear para corrigir sistemas de arquivos que não diferenciam maiúsculas de minúsculas"
git mv hello.txt Hello.txt
" em um sistema de arquivos que não diferencia maiúsculas de minúsculas sempre "destination already exists
" dispara , porque esses dois nomes se referem ao mesmo caminho do ponto de vista do sistema de arquivos e exigem que o usuário forneça "--force
" ao corrigir o caso do caminho registrado no índice e no diretório próximo commit.git mv hello.txt Hello.txt
simplesmente funciona (não é--force
mais necessário).A outra alternativa é:
E renomeie o arquivo diretamente; git add e commit.
fonte
git config core.ignorecase false
Considerando a resposta do larsks , você pode fazê-lo funcionar com um único comando com "--force":
fonte
Error: Will not add file alias 'MyFile' ('myfile' already exists in index)
Às vezes, você deseja alterar a capitalização de muitos nomes de arquivos em um sistema de arquivos que não diferencia maiúsculas de minúsculas (por exemplo, no OS X ou Windows). Executar
git mv
comandos se cansará rapidamente. Para facilitar um pouco as coisas, é isso que eu faço:git add . -A
para remover todos os arquivos.git add .
. O Git deve ver que os arquivos foram renomeados.Agora você pode fazer uma confirmação dizendo que alterou a capitalização do nome do arquivo.
fonte
Os nomes de arquivo no OS X não diferenciam maiúsculas de minúsculas (por padrão). Isso é mais um problema do SO do que um problema do Git. Se você remover e ler o arquivo, deverá obter o que deseja ou renomeá-lo para outra coisa e renomeá-lo novamente.
fonte
git clone
repo em um sistema Linux, renomear os arquivos e enviá-los apenas para esta situação (se você tiver um sistema Linux em mãos).git rm --cached fileorfolder
remover o arquivo ou pasta do git sem remover o arquivo ou a pasta do sistema de arquivos. Em seguida, você pode simplesmente adicionar o arquivo ou a pasta novamente comgit add fileorfolder
.Definido
ignorecase
comofalse
na configuração do gitComo o post original é sobre "Alterando a capitalização de nomes de arquivos no Git":
Se você está tentando alterar a capitalização de um nome de arquivo no seu projeto, não precisa forçar o renomeio do Git. Na IMO, prefiro alterar a capitalização do meu IDE / editor e certifique-se de configurar o Git corretamente para pegar a renomeação.
Por padrão, um modelo Git é definido para ignorar maiúsculas e minúsculas (sem distinção entre maiúsculas e minúsculas). Para verificar se você tem o modelo padrão, use
--get
para recuperar o valor de uma chave especificada. Use--local
e--global
para indicar ao Git se deve selecionar um valor-chave de configuração na configuração do repositório Git local ou global. Como exemplo, se você deseja pesquisar sua chave globalcore.ignorecase
:Se isso retornar
true
, defina-o como:(Verifique se você possui permissões adequadas para mudar global.) E aí está; agora sua instalação do Git não ignoraria letras maiúsculas e as trataria como alterações.
Como sugestão, se você estiver trabalhando em projetos em vários idiomas e achar que nem todos os projetos devem ser tratados com distinção entre maiúsculas e minúsculas pelo Git, basta atualizar o
core.ignorecase
arquivo local .fonte
git config --global --get core.ignorecase
não retornar nada. Étrue
?? porque depois que eu defini-lo comofalse
ele retorna false (Windows 10)git mv
). Também estou assumindo que, por padrão, é considerado verdadeiro (ou seja, está ignorando o caso). Ou isso, ou corresponde à política do sistema operacional para especificar a caixa do nome do arquivo.Você pode abrir o diretório ".git" e editar o arquivo "config". No conjunto "[core]", defina "ignorecase = true" e pronto;)
fonte
Para
git mv
arquivos em massa para minúsculas no macOS:Ele minúscula todos os arquivos em uma pasta.
fonte
Esse snippet do Python fará com que
git mv --force
todos os arquivos em um diretório sejam minúsculos. Por exemplo, foo / Bar.js se tornará foo / bar.js viagit mv foo/Bar.js foo/bar.js --force
.Modifique-o ao seu gosto. Eu apenas pensei em compartilhar :)
fonte
Exemplo de trabalho:
fonte