TortoiseGit修改标志(图标叠加)未更新

时间:2011-11-15 14:32:12

标签: git tortoisegit

我在一些代码中做了一些小改动,但是TortoiseGit将其显示为已修改(红色感叹号),尽管我已经提交,拉动,推动,但它保持不变。我该怎么办?我以前没见过这个问题。

14 个答案:

答案 0 :(得分:107)

我假设你正在使用乌龟git?我以前遇到过这个问题,有时按 F5 修复它,有时它会在龟龟重新生成之后消失。

这是另一种可能的解决方法link

  

目前的解决方法是使用Windows任务管理器终止TGitCache.exe。

答案 1 :(得分:24)

对我有帮助的是以下内容:

  1. 转到“设置 - >图标叠加”在“状态缓存”下选中“无”选项
  2. 刷新资源管理器F5
  3. 返回并将缓存选项更改回“默认”

答案 2 :(得分:12)

我尝试过一种解决方法:

重命名存储库的目录,然后将其更改回来,你就可以了!

例如: MyComplexProject 可以更改为 MyComplexProject1 ,然后返回 MyComplexProject

答案 3 :(得分:10)

杀死TGitCache.exe对我有用。 ....我把它作为答案,因为我没有足够的声誉点来添加它作为评论。但是想帮助进一步迭代它是一个有效的解决方案。

答案 4 :(得分:8)

除了@Andy提到的内容之外,您可以通过限制必须监控的文件夹来使覆盖层更快地工作。

右击 - > TortoiseGit - >设置 - >图标叠加

此处输入包含和排除路径。我通常明确指出我的回购/工作副本:

enter image description here

答案 5 :(得分:4)

当图标未更新时,您可以使用以下“运行”命令快速终止图标覆盖缓存:

taskkill /f /im tgitcache.exe

缓存进程应自动重启。如果您经常发现这种情况,可以将其转换为桌面快捷方式。

答案 6 :(得分:3)

请检查您的路径以查看是否匹配。

Some/Dir/SomeFile.ext

与Windows相同

some/DIR/someFILE.EXT

但对于Git来说,他们分布在不同的地方。这可以通过使用合适的外壳从顶部向后导航来解决。

答案 7 :(得分:2)

我在Windows上遇到了同样的问题。

Killing TGitCache确实工作了几秒钟,但红色图标又出现了。

事实证明该文件已在本地重命名(第一个字母从大写更改为小写)但在Git中未更改。 Windows不区分大小写,但Git是!因此图标叠加不再匹配。我确实通过删除特定文件并选择" revert"来自Turtoise Git上下文菜单。在列表中,显示了两个文件,一个是首字母大写,另一个是完整的小写。

最后从Git上下文菜单重命名文件确实为我解决了这个问题。

答案 8 :(得分:1)

这是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%

答案 9 :(得分:0)

此处没有其他选项可以解决问题。 (我无法识别出任何更改套管的文件) 我非常确信所有内容都已检入,因此我只是删除了我的仓库并再次检查了。噗,又来了。

如果你没有那么自信(或者你只是不想冒险,那么最好),重新命名你的repo文件夹并再次检查你的回购,然后你可以拉差异以查看是否奇怪在两个repo文件夹之间丢失/更改。

答案 10 :(得分:0)

这可能会帮助... 我的驱动器号是B:并且覆盖图标不会更新。我将其更改为C:之外(我使用M :),并且开始工作。看起来TGIT不会在C以下驱动器:

答案 11 :(得分:0)

为我们解决此问题的原因是,我们已将Git存储库移至映射的网络驱动器,从而更改了驱动器号。

似乎需要将TortoiseGit设置为监视网络驱动器-这不是默认行为。

因此,要解决此问题,您将:

  • 右键单击一个repo文件夹
  • 选择“ TortoiseGit”
  • 选择“设置”
  • 选择“图标叠加层”
  • 勾选“网络驱动器”

工作完成。

答案 12 :(得分:0)

在对此感到惊讶并尝试了几乎所有内容之后,我设法通过简单地从标记为已修改的目录中删除一个文件,然后从TortoiseGit菜单本身还原该文件来解决此问题。 / p>

P.S。在执行此操作之前和之后,我确保整个目录的CRC64校验和相同。

答案 13 :(得分:0)

不确定这是否相关。

类似TortoiseGit的文件/文件夹盒存在缓存问题。

就我而言,由于文件夹的大小写与预期的不正确,因此图标的叠加层没有显示

Difference of cases of Z in folder name zeta