Я вніс невелику зміну в деякий код, але TortoiseGit відображає його як модифікований (червоний знак оклику), хоча я робив, тягнув, штовхав, але він залишається. Що мені тут робити? Я не бачив цього питання раніше.
Я вніс невелику зміну в деякий код, але TortoiseGit відображає його як модифікований (червоний знак оклику), хоча я робив, тягнув, штовхав, але він залишається. Що мені тут робити? Я не бачив цього питання раніше.
Відповіді:
Я припускаю, що ви використовуєте черепаховий git? У мене була проблема раніше, іноді натискання F5виправляє це інший раз, вона просто зникає після того, як черепаха сама повторно синхронізується.
Ось ще одне можливе посилання на виправлення .
Поточне обхідне рішення - убити TGitCache.exe за допомогою диспетчера завдань Windows.
Мені допомогло наступне:
Kill TGitCache.exe працює для мене. .... Я ставлю це як відповідь, оскільки мені не вистачає очок репутації, щоб додати це як коментар. Але хотів допомогти далі повторити, що це робоче рішення.
Існує обхідний шлях, який я спробував:
Перейменуйте каталог сховища, а потім змініть його назад, і все готово!
Як приклад: MyComplexProject можна змінити на MyComplexProject1, а потім повернути на MyComplexProject .
Окрім згадуваного @Andy, ви можете змусити накладання працювати швидше, обмеживши папки, які він повинен контролювати.
Клацніть правою кнопкою миші-> TortoiseGit -> Налаштування -> Накладання піктограм
Тут введіть шляхи включення та виключення. Зазвичай я прямо вказую на мої репо / робочі копії:
Будь ласка, перевірте свій шлях, щоб перевірити, чи відповідає він на випадок.
Some/Dir/SomeFile.ext
є однаковим для вікон, як
some/DIR/someFILE.EXT
Але для Git вони знаходяться в різних місцях. Це виправляється шляхом повернення назад зверху за допомогою відповідного кожуха.
У мене була та сама проблема в Windows.
Вбивство TGitCache справді спрацювало пару секунд, але червоний значок знову з’явився.
Виявилося, що файл було перейменовано (перша буква була змінена з великої на малу) регіонально, але в Git вона не була змінена. Windows не враховує регістр, але Git - це! Отже, накладення піктограм більше не збігалося. Я дізнався це, видаливши конкретний файл і вибравши "повернути" з контекстного меню Turtoise Git. У списку справді з'явилися два файли, один із першої літери великим, інший - повною малими.
Нарешті, перейменування файлу з контекстного меню Git вирішило проблему для мене.
Коли піктограми не оновлюються, ви можете швидко вбити кеш накладеного значка, використовуючи таку команду "Виконати":
taskkill /f /im tgitcache.exe
Процес кешування повинен автоматично перезапуститися. Ви навіть можете перетворити це на ярлик на робочому столі, якщо помітите, що це відбувається часто.
Жоден з інших варіантів тут не може змусити проблему зникнути. (Я не зміг ідентифікувати жодного файлу, який зазнав змін у корпусі). Я був досить впевнений, що все було зареєстровано як слід, тому я просто видалив своє репо та перевірив його знову . Пуф, знову працює.
Якщо ви не настільки впевнені в собі (або просто не хочете ризикувати, як найкраще), перейменуйте свою папку репо lcoally і перевірте репо знову, тоді ви можете потягнути різницю, щоб побачити, чи немає чогось дивного / змінився між двома папками репо.
Це відома проблема у TortoiseGit. Він існує роками і, мабуть, ніколи не буде виправлений. Не знаю, чи це тому, що розробник TortoiseGit не хоче чи не може цього зробити. (Я також повідомляв про це раніше, але зараз не можу знайти проблему.)
У будь-якому випадку, ось що я роблю, щоб вирішити це:
git gc --prune=all --quiet
Він обрізає сховище Git, перепаковуючи всі ці окремі об'єктні файли, зменшуючи кількість файлів у .git
з десятків тисяч до менше 20, і, ймовірно, покращуючи загальну продуктивність операцій Git.
Іноді Git робить полегшену версію цього самостійно після коміту, але я рідко коли-небудь бачив, щоб це траплялося за роки щоденного використання. Тому я просто роблю це сам. Це також чудова дія, яку слід розглянути перед тим, як зробити резервну копію системи (див. Нижче).
Щоб полегшити це, я створив пакетний файл git-gcall.cmd
у доступному шляху, який викликає команду, показану вище. Мені доводиться запускати його практично після кожного окремого коміту, а через 2-3 секунди піктограми оновлюються самі. Ніяких вбивств. Просто пробуджуючи TortoiseGit трохи важче, щоб насправді спостерігати за сховищем та оновлювати його статус.
Ось сценарій PowerShell, який запускає цю команду в наборі налаштованих каталогів, якщо потрібно, рекурсивно для використання перед створенням резервної копії. Його також можна запускати регулярно, наприклад, на ніч, щоб вирішити цю проблему застарілих піктограм у фоновому режимі.
gc-all-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
Зателефонуйте йому із звичайним необхідним супровідним пакетним файлом:
gc-all-git.cmd:
@echo off
cd /d "%~dp0"
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy unrestricted -File gc-all-git.ps1
exit /b %errorlevel%
Я думаю, ця проблема трапилася у мене через програми, що конкурують за накладання піктограм обмежень Windows (я вважаю, що це дозволяє максимум 15).
Ось що мені довелося зробити, щоб вирішити цю проблему:
regedit
та перейдіть доComputer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers
клавіші.Дивіться також: TortoiseGit не відображає накладання значків
Рішення для нас вирішило те, що ми перенесли свої репозиторії Git на відображений мережевий диск, змінивши таким чином букву диска.
Здається, TortoiseGit потрібно налаштувати для моніторингу мережевих дисків - це не поведінка за замовчуванням.
Отже, щоб вирішити це питання, ви повинні:
Робота виконана.
Це може допомогти ... Моя буква диска була B: і значки накладання не оновлювались. Я змінив його на C :, (я використовував M :), і він почав працювати. Схоже, TGIT не рухається нижче C:
Здивувавшись цьому і спробувавши майже все, мені вдалося це виправити, просто видаливши один файл із каталогу, позначеного як змінений, а потім повернувши його з самого меню TortoiseGit.
PS Я переконався, що контрольна сума CRC64 для всього каталогу була однаковою до і після цієї операції.