我在一些代码中做了一些小改动,但是TortoiseGit将其显示为已修改(红色感叹号),尽管我已经提交,拉动,推动,但它保持不变。我该怎么办?我以前没见过这个问题。
答案 0 :(得分:107)
我假设你正在使用乌龟git?我以前遇到过这个问题,有时按 F5 修复它,有时它会在龟龟重新生成之后消失。
这是另一种可能的解决方法link。
目前的解决方法是使用Windows任务管理器终止TGitCache.exe。
答案 1 :(得分:24)
对我有帮助的是以下内容:
答案 2 :(得分:12)
我尝试过一种解决方法:
重命名存储库的目录,然后将其更改回来,你就可以了!
例如: MyComplexProject 可以更改为 MyComplexProject1 ,然后返回 MyComplexProject 。
答案 3 :(得分:10)
杀死TGitCache.exe对我有用。 ....我把它作为答案,因为我没有足够的声誉点来添加它作为评论。但是想帮助进一步迭代它是一个有效的解决方案。
答案 4 :(得分:8)
除了@Andy提到的内容之外,您可以通过限制必须监控的文件夹来使覆盖层更快地工作。
右击 - > TortoiseGit - >设置 - >图标叠加
此处输入包含和排除路径。我通常明确指出我的回购/工作副本:
答案 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设置为监视网络驱动器-这不是默认行为。
因此,要解决此问题,您将:
工作完成。
答案 12 :(得分:0)
在对此感到惊讶并尝试了几乎所有内容之后,我设法通过简单地从标记为已修改的目录中删除一个文件,然后从TortoiseGit菜单本身还原该文件来解决此问题。 / p>
P.S。在执行此操作之前和之后,我确保整个目录的CRC64校验和相同。
答案 13 :(得分:0)