我在代码中做了一个小的更改,但是TortoiseGit显示它为修改状态(红色感叹号),尽管我已经提交、拉取、推送,但仍然保持不变。这里该怎么办?我以前没有遇到过这个问题。
我在代码中做了一个小的更改,但是TortoiseGit显示它为修改状态(红色感叹号),尽管我已经提交、拉取、推送,但仍然保持不变。这里该怎么办?我以前没有遇到过这个问题。
我假设你正在使用tortoise git?我之前也遇到过这个问题,有时候按下键可以解决,其他时候则是等待tortoise自行同步即可消失。
这里还有另一个可能的解决方法,请参考链接。
当前的解决办法是使用Windows任务管理器结束TGitCache.exe进程。
对我有帮助的是以下方法:
这里有一个我尝试过的解决方法:
将存储库目录重命名,然后再将其改回来,就可以了!
例如:MyComplexProject 可以更改为 MyComplexProject1,然后再改回 MyComplexProject。
Kill TGitCache.exe对我有用。......我把它作为答案,因为我没有足够的声望分数将其添加为评论。但想要进一步说明它是一个有效的解决方案。
我在Windows上遇到了相同的问题。
杀掉TGitCache确实可以解决问题,但红色图标几秒钟后又出现了。
原来文件被本地重命名(首字母从大写改为小写),但在Git中没有更改。Windows不区分大小写,但Git有区别!因此图标覆盖不再匹配。我是通过从Turtoise Git上下文菜单中删除特定文件并选择“还原”来找到这个问题的。在列表中,出现了两个文件,一个首字母大写,另一个完全小写。
最终,通过Git上下文菜单将文件重命名解决了我的问题。
Some/Dir/SomeFile.ext
对于 Windows 来说是相同的
some/DIR/someFILE.EXT
但对于 Git 而言,它们位于不同的位置。通过使用正确的大小写从顶部导航回来可以解决这个问题。
除了 @Andy 提到的内容外,您还可以通过限制需要监视的文件夹来加快叠加功能的速度。
右键单击-> TortoiseGit -> 设置 -> 图标叠加
在这里输入包含和排除路径。我通常会明确指向我的存储库/工作副本:
当图标没有更新时,您可以使用以下“运行”命令快速清除图标叠加缓存:
taskkill /f /im tgitcache.exe
这是TortoiseGit中已知的问题,存在多年并且似乎永远不会被解决。我不知道是因为TortoiseGit的开发人员不愿意或者无法解决它。(我以前也报告过问题,但现在找不到了。)
无论如何,以下是我解决问题的方法:
git gc --prune=all --quiet
有时,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
@echo off
cd /d "%~dp0"
%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy unrestricted -File gc-all-git.ps1
exit /b %errorlevel%