Измененный знак TortoiseGit (наложение значков) не обновляется - PullRequest
66 голосов
/ 15 ноября 2011

Я внес небольшое изменение в некоторый код, но TortoiseGit показывает его как измененный (красный восклицательный знак), хотя я зафиксировал, потянул, подтолкнул, но он остается.Что мне здесь делать?Я не видел эту проблему раньше.

Ответы [ 13 ]

108 голосов
/ 15 ноября 2011

Я предполагаю, что вы используете Git черепахи? У меня была проблема раньше, иногда нажатие F5 исправляет ее, иногда она просто исчезает после повторной синхронизации черепахи.

Вот еще одно возможное исправление ссылка .

Текущий обходной путь - уничтожение TGitCache.exe с помощью диспетчера задач Windows.

24 голосов
/ 13 марта 2017

Для меня помогло следующее:

  1. Перейдите в «Настройки -> Наложения значков» Проверьте в «Кэш состояния» параметр «нет»
  2. Обновите проводник F5
  3. Вернитесь назад и измените параметр кэширования на «По умолчанию»
12 голосов
/ 09 июня 2016

Есть обходной путь, который я попробовал:

Переименуйте каталог репозитория, а затем измените его обратно, и все готово!

Например: MyComplexProject можно изменить на MyComplexProject1 , а затем вернуться к MyComplexProject .

10 голосов
/ 05 мая 2015

У меня убивает TGitCache.exe. .... Я поставил это как ответ, потому что у меня недостаточно очков репутации, чтобы добавить это как комментарий. Но хотел помочь еще раз повторить, что это рабочее решение.

8 голосов
/ 15 ноября 2011

Кроме того, что упомянул @Andy, вы можете ускорить работу оверлеев, ограничив количество папок, которые он должен отслеживать.

Щелкните правой кнопкой мыши -> TortoiseGit -> Настройки -> Наложения значков

Здесь введите пути включения и исключения. Я обычно явно указываю на свои репо / рабочие копии:

enter image description here

4 голосов
/ 28 июля 2015

Когда значки не обновляются, вы можете быстро уничтожить кэш наложения значков, используя следующую команду «Выполнить»:

taskkill /f /im tgitcache.exe

Процесс кэширования должен автоматически перезапуститься.Вы даже можете превратить это в ярлык на рабочем столе, если заметите, что это происходит часто.

4 голосов
/ 15 ноября 2011

Пожалуйста, проверьте ваш путь, чтобы увидеть, совпадает ли он в случае.

Some/Dir/SomeFile.ext

совпадает с окнами как

some/DIR/someFILE.EXT

Но для Git они находятся в разных местах.Это можно исправить, вернувшись сверху с подходящим корпусом.

2 голосов
/ 15 февраля 2018

У меня была такая же проблема в Windows.

Убийство TGitCache работало в течение нескольких секунд, но снова появился красный значок.

Оказалось, что файл был переименован (первая буква была изменена с верхнего на нижний регистр) локально, но не был изменен в Git. Windows нечувствительна к регистру, но Git есть! Таким образом, значок наложения больше не совпадает. Я выяснил это, удалив конкретный файл и выбрав «вернуться» из контекстного меню Turtoise Git. В списке появились два файла: один с первой заглавной буквой, а другой - с полной строчкой.

Наконец, переименование файла из контекстного меню Git решило проблему для меня.

1 голос
/ 26 января 2019

Это известная проблема в 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%
1 голос
/ 21 мая 2018

Я думаю, что эта проблема возникла из-за того, что приложения конкурируют за наложение значков лимитов Windows (я полагаю, это допускает максимум 15).

Вот что мне нужно было сделать, чтобы решить эту проблему:

  1. Откройте regedit и перейдите к клавише Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers.
  2. Переставьте подключи так, чтобы клавиши «Черепаха» находились сверху, с префиксом пробелов.
  3. Перезапустите проводник Windows с помощью диспетчера задач.

См. Также: В TortoiseGit не отображаются пометки на значках

...