Измененный знак TortoiseGit (наложение значков) не обновляется

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

Ответ 1

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

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

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

Ответ 2

Что помогло мне, было следующее:

  • Перейдите в раздел "Настройки → Наложение значков". Проверьте в разделе "Кэш состояния" параметр "none"
  • Обновить проводник F5
  • Вернитесь назад и измените параметр кеша на "По умолчанию"

Ответ 3

Существует обходное решение, которое я пробовал:

Переименуйте каталог репозитория, а затем измените его, и вы хорошо пойдете!

В качестве примера: MyComplexProject может быть изменен на MyComplexProject1, а затем обратно в MyComplexProject.

Ответ 4

Kill TGitCache.exe работает для меня..... Я поставил это как ответ, потому что у меня недостаточно очков репутации, чтобы добавить его в качестве комментария. Но хотелось бы помочь продолжить итерацию, что это рабочее решение.

Ответ 5

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

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

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

enter image description here

Ответ 6

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

taskkill /f /im tgitcache.exe

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

Ответ 7

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

Some/Dir/SomeFile.ext

то же самое для окон, что и

Some/Dir/SomeFile.ext

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

Ответ 8

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

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

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

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

Ответ 9

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

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

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

Смотрите также: TortoiseGit не показывает наложения значков

Ответ 10

Ни один из других вариантов здесь не может решить проблему. (Я не смог определить ни один файл, в котором произошли изменения в корпусе). Я был уверен, что все проверено, как и должно быть, поэтому я просто удалил репо и снова его проверил. Пуф, снова работает.

Если вы не настолько уверены в себе (или просто не хотите рисковать, как лучше), переименуйте вашу папку репо lcoally и проверьте вашу репо снова, тогда вы можете запустить diff, чтобы увидеть, что-то странное отсутствует/изменился между двумя папками репо.

Ответ 11

Это может помочь... Моя буква диска была B: и значки наложения не будут обновляться. Я изменил его за пределы C :, (я использовал M :), и он начал работать. Похоже, TGIT не ездит ниже C:

Ответ 12

Проблема, которая решила эту проблему для нас, заключалась в том, что мы переместили наши репозитории Git на подключенный сетевой диск, таким образом изменив букву диска.

Кажется, что TortoiseGit должен быть настроен для мониторинга сетевых дисков - это не стандартное поведение.

Таким образом, чтобы решить эту проблему, вы бы:

  • Щелкните правой кнопкой мыши папку репо
  • Выберите "TortoiseGit"
  • Выберите "Настройки"
  • Выберите "Наложения значков"
  • Галочка "Сетевые диски"

Работа выполнена.

Ответ 13

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