Это известная проблема в TortoiseGit. Он существует годами и, очевидно, никогда не будет исправлен. Я не знаю, потому что разработчик TortoiseGit не хочет или не может этого сделать. (Я также сообщал об этом раньше, но сейчас не могу найти проблему.)
Во всяком случае, вот что я делаю, чтобы решить эту проблему:
git gc --prune=all --quiet
Он сокращает репозиторий Git, перепаковывает все эти отдельные объектные файлы, сокращает количество файлов в .git
с десятков тысяч до 20 и, возможно, повышает общую производительность операций Git.
Иногда Git делает облегченную версию этого после коммита, но я редко когда-либо видел, чтобы это происходило за годы ежедневного использования. Так что я просто делаю это сам. Это также большое действие, которое следует рассмотреть перед созданием резервной копии системы (см. Ниже).
Для упрощения я создал пакетный файл git-gcall.cmd
по доступному пути, который вызывает команду, показанную выше. Я должен запускать его практически после каждого коммита, а через 2–3 секунды иконки обновляются. Убийства не причастны. Просто разбудить TortoiseGit немного сложнее, чтобы реально наблюдать за хранилищем и обновлять его состояние.
Вот скрипт PowerShell, который рекурсивно запускает эту команду в наборе настроенных каталогов, если это необходимо, для использования перед созданием резервной копии. Его также можно запускать на регулярной основе, например ночью, для решения этой устаревшей проблемы значков в фоновом режиме.
дс-все-git.ps1:
Write-Host "Packing Git repositories where necessary..."
function Git-Gc($path)
{
cd $path
Get-ChildItem . -Recurse -Hidden .git | Foreach-Object {
cd $_.FullName
if ((Get-ChildItem objects -File -Recurse).Count -gt 50)
{
cd ../
Write-Host $(Get-Location).Path
git gc --prune=all --quiet
}
}
}
Git-Gc C:\Source
Git-Gc C:\xampp\htdocs
Позвоните с помощью обычного необходимого сопроводительного файла:
дс-все-git.cmd:
@echo off
cd /d "%~dp0"
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy unrestricted -File gc-all-git.ps1
exit /b %errorlevel%