TortoiseGit不显示图标覆盖


133

我已经用TortoiseGit了整整一年了。直到昨天遇到问题时,它对我来说一直运转良好。当Windows资源管理器在我身上崩溃了一段时间(挂在“发现项目”上)时,我正在删除一个文件夹,然后重新启动系统。

自那时以来,(而且我知道,如果描述的事件有什么关系呢),TortoiseGit已经停止显示Explorer图标覆盖。但是,此行为与在此处发布问题的其他行为不同,因为:

open file所有程序的对话框中,图标仍然存在(!)。

这是我尝试过的事情的清单:

  1. 我更改了TortoiseGit设置以显示不同的图标。
  2. 重新安装TortoiseGit(卸载,重新启动,安装,重新启动)。
  3. 我在中删除了所有以“ Tortoise”开头的图标叠加层HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer \ShellIconOverlayIdentifiers,然后卸载了TortoiseGit,重新启动了计算机并重新安装了TortoiseGit。

编辑:

我尝试在计算机上创建一个新用户,并且该新用户的图标覆盖效果很好。我现在更加困惑。

到目前为止,没有任何帮助。有任何想法吗?


您安装了TortoiseSVN吗?
mozgow

@mozgow不,只有TortoiseGit
5xum

5
同样的事情发生在我身上。我的事故是因为我在计算机上安装了“ Dropbox”。Dropbox还使用IconOverlays,它们在列表中的排名高于TortoiseGit。而且由于您只能拥有15个,因此您可能不会看到它们。我的名单从19-28开始,因此我之所以没有看到他们。使用以下Dzhuang的建议,查看您的叠加层在列表中的排名。
乍得


@MrTux我很想知道您如何看待2014年8月6日提出的问题,作为2017年1月11日(即2年)提出的问题的重复。
5xum

Answers:


130

我遇到了同样的问题,并且按照论坛上的说明进行操作。我所做的是此(复制):

我找到解决方法:)用下面的""所有乌龟键 包装HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

继续1TortoiseNormal等等...我理解了这个问题,看到Dropbox并运行regedit时,Dropbox上有一个符号(""),但没有乌龟。所以我添加了标志,关闭explorer.exe,希望它很好:)

因此,我所做的就是将密钥重命名1TortoiseNormal"1TortoiseNormal"etc。我不知道为什么将其包装在双引号中会使它再次工作。

最初的论坛不见了,但是评论中提供了很好的摘要


33
这可能是排序问题。双引号字符是第一个可打印字符之一,因此“ DropboxExt1”在1TortoiseNormal之前,但是“ 1TortoiseNormal”在“ DropboxExt1”之前。我还尝试从Dropbox的键中删除双引号,并且它起作用了。
user34814

5
从Skype条目中学到了一些东西。无需将其包装在“”(双引号)周围,只需在条目的开头添加一个空格。因此,条目将是<space-char> 1TortoiseNormal等,这似乎是一个排序问题:)。
Pratham

5
安装保管箱后,我也遇到了同样的问题。我在此博客中找到了明确的原因/解决方法,但是在重命名了乌龟键之后,它们似乎并没有成为列表的顶部。.我花了一段时间才意识到Dropbox键在前面..所以我改名为龟那些为<空间> 1TortoiseNormal等BLOG: blog.garethjmsaunders.co.uk/2015/03/22/...
user1420372

10
@CodyStott事实证明,MS现在正在做同样的事情... OneDrive图标也以空格开头...在所有公司弄清楚这个技巧之后的10年时间里,所有键名都以几十个空格开头...: p
Stijn de Witt 2015年

30
更新:Dropbox现在还在前面添加了3个空格... MS请注意(您已经做好了,因为OneDrive正在使用此技巧)并采取行动。这完全糟透了。那么,这个最大的11/15图标到底是怎么回事?是2017年?!?我不需要再进行UI大修...我需要这样的东西才能在不到20年的时间内修复!
Stijn de Witt

102

Windows最多允许按字母数字顺序排列的11个图标叠加层标识符-如果超过11个,则这些图标将不会显示。

您可以在DOS提示符下运行以下命令:

regedit /e c:\icons.txt HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

然后打开文件C:\icons.txt。跳过前两行,如果1TortoiseNormal和其他*Tortoise*值不在前11个值中,则它们的图标叠加层将不会显示。@Chi Chan提供的解决方案只是一种1TortoiseNormal在所有叠加层之间进行排序时提高排名的简单方法,您还可以通过在之前添加空格来重命名值1TortoiseNormal,即,

" 1TortoiseNormal"

使他们排名更高。

更新: 对于Windows 8,图标叠加层的限制为15。


35
大声笑。因此,我刚刚升级到Windows 10,我的TortoiseGit图标丢失了,所以我搜索并找到了该线程...事实证明,Microsoft可能也读取了此线程,因为默认情况下OneDrive图标以空格开头!!他们会求助于Microsoft多么愚蠢...而不是仅仅建立一个让我们从Windows设置中配置图标注释的顺序/优先级的屏幕。
Stijn de Witt

20
@StijndeWitt GoogleDrive和TortoiseSVN / Git现在似乎提高了赌注并增加了2个空格。我们现在正式参加了太空竞赛...
icc97

15
@ icc97大声笑@'太空竞赛'。但是DropBox比这些业余爱好者领先一步……他们增加了3个空格:([....\ DropboxExt01]编辑:SO似乎将它们折叠成1个……)
Stijn de Witt

8
注意!!重新启动Windows资源管理器以显示图标。按Ctrl + Shift + Esc并重新启动“ Windows资源管理器”(或者重新启动计算机)
PhillipPDX

7
我也只是在上面评论过,但是想在这里补充说明,所有大型云提供商(onedrive,dropbox,google drive)现在都在动态读取列表,并将自动适应和请求空格以“赢得”战争....直到下一个更新并执行相​​同的操作。我的现在至少拥有五个领导空间!!另外,从Vista和更高版本开始是15。
Collin Chaffin

40

Windows 10解决方案步骤;

  1. 打开注册表

路径:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Explorer \ ShellIconOverlayIdentifiers

  1. 删除/删除所有SkyDrive / OneDrive键。如果您在尝试删除密钥时遇到错误,则可能需要一个一个地获取密钥的所有权,并让用户完全控制。

  2. 按Ctrl + Shift + Esc并重新启动“ Windows资源管理器”(或者重新启动计算机)

  3. 现在所有git / svn覆盖图标都可见!


这对我有用。似乎Windows资源管理器中允许的图标叠加层数量是有限的。
Yodacheese 2015年

6
无论出于何种原因,我都无法删除OneDrive密钥。我只是在Tortoise键的开头添加了三个空格,重新启动后又可以正常工作了。
NickH

1
OneDrive在下次重新登录时会将密钥放回。
Mike Lowery

2
除了删除现有键之外,您还可以在所有Tortoise键的前面添加两个(或更多)空格。会产生相同的效果-让您加入太空竞赛!
Corpus Gigantus

28

发疯之前,只需尝试重新启动!它为我工作;)


8
老实说,您真的认为我没有尝试过吗?事实上,我写了我在第2步重新启动我的电脑
5xum

14
否决票是毫无根据的。当我遇到问题时,我的回答是为了像我一样进入此页面的其他人受益。在重新启动PC之前,我肯定浪费了1/2个小时试图找出问题所在。我赞赏这对您不起作用,但对其他人可能有用。
Jan Hettich 2014年

3
为我工作...在尝试更复杂的解决方案之前,第一步绝对值得列入检查清单。
Tony O'Hagan

4
这对我也有帮助。我知道图标叠加层与explorer进程相关,并且使用TortoiseSVN可以简单地杀死并重新启动explorer进程(不是活动窗口,而是主要窗口)以避免重新启动。我为TortoiseGit做过同样的事情,但这还不够。重新启动帮助。
斯拉夫(Slav)

1
我阅读了所有答案,包括这个答案,然后选择仅重新启动Windows资源管理器(我使用了@replicantspy的答案中提到的Ctrl + Shift + Asc-then-restart-process方法)。它为我工作!因此,此答案的+1相当公平。:) Tks!
Luiz Vieira

16

只需在此regedit加法器的“草龟名称”选项的第一个名称中添加一个空格(如果需要,可添加更多):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers

例如:

"1TortoiseNormal"

应更改为:

" 1TortoiseNormal"

系统reboot图标正确显示后。


4

我首先在Windows 10 64位计算机上安装了TortoiseSVN(1.9.5)和msysgit(2.11.0)。TortoiseSVN图标显示正常。

当我在这两个之后安装TortoiseGit(2.3.0.0)时,这些图标将不会显示。

我检查了一下HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers,一切都很好。乌龟图标位于前10名中。

我以前修复的问题在GitLab的TortoiseGit问题#692中提出

  • 打开 regedit.exe
    • HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer
    • 添加值为“ 2000”的新字符串值“ Max Cached Icons”

关闭/重启资源管理器并显示图标!


1
我发现这对我来说是最简单,最快和最好的解决方案(Windows 10)。
timbo,

3

卸载TortoiseSVN之后,今天我也遇到了同样的问题。我重新启动后仍然没有运气,所以我进入控制面板,卸载程序,然后在TortoiseGit项上选择“修复”,一切恢复正常。我怀疑所有的Tortoise系列应用程序都有一些共享的注册表项或其他内容。


3

我也突然退出了TortoiseGIT外壳图标,我不记得是什么导致的,但是我发现了这一点,并尝试将1TortioiseNormal更改为“ 1TortioiseNormal”的注册表项,依此类推。无论如何,这可能是一件好事,但是图标覆盖仍然无法正常工作。

对于“重启计算机”的总括回答,我太忙了,对我说的是“某些服务进程需要重新启动,但您永远找不到它,因此只能重新启动。” 没事

我也使用TortoiseSVN,并且那些图标覆盖仍在为我工作。我在任务管理器的“进程”选项卡中查看,发现正在运行名为TSVNCache.exe的文件。git没有任何类似的迹象,所以一时兴起,我转到了应用程序选项卡,然后单击“新建任务”,输入TGITCache.exe,并确定该进程已启动。从那里回到进程,杀死explorer.exe,然后再次回到应用程序-> New Task并启动explorer.exe。

现在,当我的TortoiseGIT图标叠加图退出时,这对我来说已经起作用了两次,因此,也许对其他人也有用。


2

对我有用的是从计算机上卸载Google云端硬盘。不知道为什么。


请参阅上面的评论。硬编码限制为15个叠加层,Google云端硬盘与Onedrive,Dropbox等一样使用多个叠加层。龟甲是最糟糕的一种,仅使用10个就几乎没有。删除Google云端硬盘后,您只需删除它的叠加式注册表项即可,剩下的15个中的“空闲”数最终可以看到Tortoise图标。
Collin Chaffin

2

我同意陈赞,我想补充一下这个补充。

它是Dropbox Explorer图标。这是一个删除它们的注册表脚本。将其保存在某个地方,因为它们会回来!

请注意,这些值也会不时更改。当前,它们在“ DropboxExtXX”之前只有3个空格。

删除Dropbox Explorer Icons.reg

Windows Registry Editor Version 5.00

[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt01]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt02]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt03]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt04]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt05]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt06]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt07]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt08]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt09]
[-HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\   DropboxExt10]

1

前导空格的问题是,每次重新启动时,Dropbox都会在其注册表中添加另一个空格,并且总是比您领先一步。

因此,我计划在这篇文章(由Christoph Zwerschke撰写)中找到一个python脚本,以在每次启动计算机时执行。之后,您还必须重新启动资源管理器。

.bat将如下所示:

python iconOverlayFixer.py
taskkill /f /im explorer.exe 
start explorer.exe  

和python脚本:

#/usr/bin/python3

import os
import winreg as reg

# names of all overlay icons that shall be boosted:

boost = """
    Tortoise1Normal
    Tortoise2Modified
    Tortoise3Conflict
    Tortoise4Locked
    Tortoise5ReadOnly
    Tortoise6Deleted
    Tortoise7Added
    Tortoise8Ignored
    Tortoise9Unversioned
"""

boost = set(boost.split())

with reg.OpenKey(reg.HKEY_LOCAL_MACHINE,
        r'SOFTWARE\Microsoft\Windows\CurrentVersion'
        r'\Explorer\ShellIconOverlayIdentifiers') as base:

    names = set()
    renames = []
    i = 0
    while True:
        try:
            name = reg.EnumKey(base, i)
        except OSError:
            break
        core = name.strip()
        if core in names:
            print('Delete', repr(core))
            reg.DeleteKey(base, name)
        else:
            names.add(core)
            if core in boost:
                core = ' ' + core
            if core != name:
                renames.append((name, core))
        i += 1

    if renames:
        for old_name, new_name in renames:
            print('Rename', repr(old_name), 'to', repr(new_name))
            value = reg.QueryValue(base, old_name)
            reg.CreateKey(base, new_name)
            reg.SetValue(base, new_name, reg.REG_SZ, value)
            reg.DeleteKey(base, old_name)
    else:
        print('Nothing to rename')

1

Windows 10对我有用的是

  1. 卸载TortoiseGit
  2. 清理文件夹并注册
  3. 再次安装
  4. 重新启动电脑
  5. 进行随机提交,甚至看不到红色图标
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.