我对某些代码进行了少量更改,但TortoiseGit将其显示为已修改(红色感叹号),尽管我已提交,拉出,推入,但它仍然存在。我应该在这里做什么?我以前没有看过这个问题。
Answers:
我假设您使用的是乌龟git?我以前遇到过这个问题,有时会按F5一下修复它,而在乌龟重新同步后它消失了。
这是另一个可能的修复链接。
当前的解决方法是使用Windows任务管理器杀死TGitCache.exe。
Kill TGitCache.exe对我有用。....我将此作为答案,因为我没有足够的声誉积分才能将其添加为评论。但想帮助进一步迭代这是一个可行的解决方案。
我尝试了一种解决方法:
重命名存储库的目录,然后将其改回即可。
例如:MyComplexProject可以更改为MyComplexProject1,然后再更改为MyComplexProject。
请检查您的路径以查看是否匹配。
Some/Dir/SomeFile.ext
与Windows相同
some/DIR/someFILE.EXT
但是对于Git,它们位于不同的位置。通过使用合适的机壳从顶部导航回来可以解决此问题。
我在Windows上遇到了同样的问题。
杀死TGitCache确实可以工作几秒钟,但是红色图标再次出现。
事实证明,该文件在本地已重命名(首字母从大写更改为小写),但在Git中未更改。Windows不区分大小写,但Git区分大小写!因此,图标叠加层不再匹配。我确实是通过删除特定文件并从Turtoise Git上下文菜单中选择“还原”来发现的。在列表中,确实显示了两个文件,一个文件的首字母大写,另一个完整的小写。
最后,从Git上下文菜单重命名文件确实为我解决了该问题。
这里没有其他选择可以使问题消失。(我无法识别出大小写有所变化的任何文件)。我非常有信心所有内容都已按原样签入,因此我只是删除了我的仓库并再次签出。of,再次起作用。
如果您不太自信(或者最好只是不想冒险),请稍稍重新命名您的repo文件夹并再次检查您的repo,然后您可以拉一个diff来查看是否缺少任何奇怪的东西/在两个仓库文件夹之间更改。
这是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不显示图标覆盖