Estou usando git
para gerenciar arquivos em um diretório local em uma máquina Windows - nenhuma rede está envolvida aqui, não estou empurrando ou puxando de / para outra máquina. Meu diretório contém talvez 100 arquivos, todos arquivos de teste, bem pequenos. Quando corro git status
, normalmente leva de 20 a 30 segundos para ser concluído. Isso é normal? Há algo que eu possa fazer para acelerá-lo ou uma maneira melhor de ver o estado do meu repositório (arquivos alterados, arquivos não rastreados, etc.)? Outros git
comandos parecem ser concluídos muito mais rápido.
85
Respostas:
Você já tentou git gc ? Isso limpa a sujeira do repositório git.
fonte
git status
usando otime
comando e obtive um tempo "real" de 30.464s. Então eu corrigit gc
em seguida,time git status
mais uma vez e tem um tempo real de 35.409s. Muito estranho.git status
várias vezes consecutivas, as execuções subsequentes ocupam apenas uma fração da primeira. Então, se você estiver executandogit status
, entãogit gc
egit status
novamente, espera-se que seja executado super rápido.Em um problema semelhante, descobri que ter um repo git em um diretório abaixo do meu repo git existente causou uma lentidão enorme.
Mudei o repositório git secundário para outro lugar e agora a velocidade é rápida!
fonte
Você está usando algum tipo de software de proteção contra vírus? Talvez isso esteja interferindo nas coisas.
git
é muito rápido para mim no windows com repositórios de 1000 arquivos.fonte
Você já tentou reembalar? git-repack .
Caso contrário, tente duplicar o diretório e excluir a pasta .git do diretório duplicado. Em seguida, crie um novo diretório git e veja se ele ainda está lento.
Se ainda estiver lento, parece um problema de sistema ou hardware. O Git finaliza o status de centenas de arquivos para mim em menos de 5 segundos.
fonte
Por algum motivo,
git status
é particularmente lento depois de mover ou copiar a pasta do repositório para um novo local.As execuções subsequentes são geralmente mais rápidas neste caso.
fonte
git status
comando inicial , então provavelmente levaria o mesmo tempo para ser concluído.Meu
git status
estava muito lento (até um minuto), porque o.gitignore
arquivo global estava localizado no meu perfil de usuário do Windows, que estava armazenado em um compartilhamento de rede inacessível.git config --global core.excludesfile
mostrou algo como
\\Nxxxx0\User\Username\Eigene Dateien\gitignore_global.txt
Por algum motivo,
\\Nxxxx0
estava inacessível e meu perfil de usuário foi carregado de um sistema de backup\\Nxxxxx1
. Demorou algum tempo para descobrir isso, porque geralmente meu perfil de usuário está vinculado a uma letra de unidade por um script de inicialização de empresa e acessar essa letra de unidade estava funcionando normalmente. Não sei por que o git-config usou o compartilhamento de rede e não a letra da unidade (provavelmente um eu mais jovem é o culpado)Após a configuração
git config --global core.excludesfile $HOME/Eigene\ Dateien/gitignore_global.txt
git status
voltou à velocidade normal.fonte
Correr
git fsck
já resolveu esse problema para mim no passado.fonte
Para mim, a lentidão foi devido a ter muitos arquivos não rastreados (arquivos temporários e de saída de scripts). A execução
git status -uno
, que exclui os arquivos não rastreados, foi executada muito mais rápido e atende aos meus requisitosfonte
O problema para mim era que eu tinha muitos repositórios diferentes clonados em meu disco rígido local, quanto mais repositórios você tiver, mais tempo levará para executar comandos como git status.
Eu simplesmente apaguei muitos repos que não precisava mais localmente, e meu status git passou de 1 minuto ~ para 5 segundos.
Não consigo ver nenhuma resposta semelhante a esta aqui.
fonte
git status
você executa em um diretório de forma alguma. Se seus repositórios tiverem check-out em diretórios diferentes, você só poderá executargit status
um deles por vez. Pode ser uma história diferente se seus repositórios git estiverem se sobrepondo, mas isso é uma má ideia de qualquer maneira.Outro aspecto de
git status
que será melhorado (no Git 2.14.x / 2.15, Q4 2017) é quando ele mostra arquivos ignorados também (git status --ignored
)Consulte o commit 5aaa7fd (18 de setembro de 2017) de Jameson Miller (
jamill
) .(Fundido por Junio C Hamano -
gitster
- no commit 075bc9c , 29 de setembro de 2017)Para obter mais melhorias (definido no Git 2.17, Q2 2018), consulte esta resposta .
fonte
node_modules
pode ser afetado por essa mudança de desempenho. Apenas talvez.Versões mais antigas do git têm um problema de desempenho com o git status - veja Maneiras de melhorar o desempenho do git status para obter mais informações.
git 2.13 tem 1 correção e 2.17 mais. Mudei de 2.7 para 2.23 e resolveu o status lento. Há outra melhoria planejada para 2.24 em breve.
fonte
No meu caso, a lentidão foi causada pela corrida
git status
como um usuário diferente do proprietário dos arquivos no projeto.Embora não seja aplicável em todas as instâncias, um simples
chown
para o usuário atual pode resolver o problema.fonte
Tente começar com um novo clone de seu checkout.
e git status em mynewrepo.
Alternativamente, e se você for mais corajoso, limpe o lixo de seu caixa existente.
Isso evita que o git tenha que escanear alguns (possivelmente grandes) conjuntos de arquivos ignorados ou não registrados.
fonte