いくつかのコードを少し変更しましたが、コミット、プル、プッシュを行ったにもかかわらず、TortoiseGitが修正(赤い感嘆符)として表示しますが、そのままです。ここで何をすべきですか?この問題は以前に見たことがありません。
私はあなたが亀のGitを使用していると仮定していますか?私は以前に問題を抱えていました F5 亀が再同期した後に消える場合もあります。
ここに別の可能な修正があります link 。
現在の回避策は、WindowsタスクマネージャーでTGitCache.exeを強制終了することです。
私に役立ったのは次のとおりです。
私が試した回避策があります:
リポジトリのディレクトリの名前を変更してから元に戻すと、準備完了です!
例として、MyComplexProjectをMyComplexProject1に変更してから、MyComplexProjectに戻すことができます。
TGitCache.exeを強制終了してください。 ....コメントとして追加するのに十分な評判ポイントがないので、これを答えにしました。しかし、それが実用的なソリューションであることをさらに反復したいと考えていました。
@Andyが言及したこととは別に、監視するフォルダーを制限することにより、オーバーレイをより高速に動作させることができます。
右クリック-> TortoiseGit->設定->アイコンオーバーレイ
ここに包含パスと除外パスを入力します。私は通常、自分のリポジトリ/作業コピーを明示的に指します:
アイコンが更新されていない場合、次の「実行」コマンドを使用して、アイコンオーバーレイキャッシュをすばやく削除できます。
taskkill /f /im tgitcache.exe
キャッシュプロセスは自動的に再起動します。頻繁に発生する場合は、これをデスクトップショートカットに変えることもできます。
パスをチェックして、大文字と小文字が一致するかどうかを確認してください。
Some/Dir/SomeFile.ext
windowsと同じです
some/DIR/someFILE.EXT
しかし、Gitにとっては異なる場所にあります。これは、適切なケーシングで上から戻ることにより改善されます。
Windowsでも同じ問題が発生しました。
TGitCacheの削除は数秒間機能しましたが、赤いアイコンが再び表示されました。
ファイルの名前はローカルで変更されました(最初の文字が大文字から小文字に変更されました)が、Gitでは変更されませんでした。 Windowsは大文字と小文字を区別しませんが、Gitは区別しません!そのため、アイコンオーバーレイはもう一致しませんでした。特定のファイルを削除し、Turtoise Gitコンテキストメニューから「元に戻す」を選択することで、これを見つけました。リストには、2つのファイルが表示されました。1つは大文字で、もう1つは小文字です。
最後に、Gitコンテキストメニューからファイルの名前を変更すると、問題が解決しました。
これは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
キー。この問題を解決したのは、Gitリポジトリをマップされたネットワークドライブに移動し、ドライブ文字を変更したことです。
TortoiseGitはネットワークドライブを監視するように設定する必要があるようです-これはデフォルトの動作ではありません。
したがって、この問題を解決するには次のようにします。
仕事完了。
ここにある他のオプションはどれも問題を解決するものではありません。 (大文字と小文字が変更されたファイルを特定できませんでした)すべてが正常にチェックインされていると確信していたので、ただレポを削除してもう一度チェックアウトしました。失礼、再び動作します。
自信がない場合(または最善の方法でリスクを回避したい場合)、リポジトリフォルダーの名前をlcoallyに変更し、リポジトリを再度チェックアウトします。 2つのリポジトリフォルダー間で変更されました。
これが役立つかもしれません...私のドライブ文字はB:で、オーバーレイアイコンは更新されません。 C:を超えて変更し(M:を使用)、動作し始めました。 TGITはCを下回らないようです。