web-dev-qa-db-ja.com

TortoiseGit修正記号(アイコンオーバーレイ)が更新されていません

いくつかのコードを少し変更しましたが、コミット、プル、プッシュを行ったにもかかわらず、TortoiseGitが修正(赤い感嘆符)として表示しますが、そのままです。ここで何をすべきですか?この問題は以前に見たことがありません。

66
Booksman

私はあなたが亀のGitを使用していると仮定していますか?私は以前に問題を抱えていました F5 亀が再同期した後に消える場合もあります。

ここに別の可能な修正があります link

現在の回避策は、WindowsタスクマネージャーでTGitCache.exeを強制終了することです。

108
Andy

私に役立ったのは次のとおりです。

  1. [設定]-> [アイコンオーバーレイ]に移動します[ステータスキャッシュ]の下にある[なし]オプションをチェックします
  2. Explorer F5を更新します
  3. 戻ってキャッシュオプションを「デフォルト」に戻します
24
neutcomp

私が試した回避策があります:

リポジトリのディレクトリの名前を変更してから元に戻すと、準備完了です!

例として、MyComplexProjectMyComplexProject1に変更してから、MyComplexProjectに戻すことができます。

12
meJustAndrew

TGitCache.exeを強制終了してください。 ....コメントとして追加するのに十分な評判ポイントがないので、これを答えにしました。しかし、それが実用的なソリューションであることをさらに反復したいと考えていました。

11
Mike Gibson

@Andyが言及したこととは別に、監視するフォルダーを制限することにより、オーバーレイをより高速に動作させることができます。

右クリック-> TortoiseGit->設定->アイコンオーバーレイ

ここに包含パスと除外パスを入力します。私は通常、自分のリポジトリ/作業コピーを明示的に指します:

enter image description here

8
manojlds

アイコンが更新されていない場合、次の「実行」コマンドを使用して、アイコンオーバーレイキャッシュをすばやく削除できます。

taskkill /f /im tgitcache.exe

キャッシュプロセスは自動的に再起動します。頻繁に発生する場合は、これをデスクトップショートカットに変えることもできます。

4
Simon East

パスをチェックして、大文字と小文字が一致するかどうかを確認してください。

Some/Dir/SomeFile.ext

windowsと同じです

some/DIR/someFILE.EXT

しかし、Gitにとっては異なる場所にあります。これは、適切なケーシングで上から戻ることにより改善されます。

4
Adam Dymitruk

Windowsでも同じ問題が発生しました。

TGitCacheの削除は数秒間機能しましたが、赤いアイコンが再び表示されました。

ファイルの名前はローカルで変更されました(最初の文字が大文字から小文字に変更されました)が、Gitでは変更されませんでした。 Windowsは大文字と小文字を区別しませんが、Gitは区別しません!そのため、アイコンオーバーレイはもう一致しませんでした。特定のファイルを削除し、Turtoise Gitコンテキストメニューから「元に戻す」を選択することで、これを見つけました。リストには、2つのファイルが表示されました。1つは大文字で、もう1つは小文字です。

最後に、Gitコンテキストメニューからファイルの名前を変更すると、問題が解決しました。

2

これは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%
1
ygoe

この問題は、Windowsの制限アイコンオーバーレイと競合するアプリケーションが原因で発生したものだと思います(最大15まで許可されていると思います)。

これは、この問題を解決するために私がしなければならなかったことです。

  1. regeditを開き、Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiersキー。
  2. サブキーを再配置するには、スペースを前に付けてTortoise *キーが一番上にあるようにします。
  3. タスクマネージャーを使用してWindowsエクスプローラーを再起動します。

参照: TortoiseGitにアイコンオーバーレイが表示されない

1
Dan Stevens

この問題を解決したのは、Gitリポジトリをマップされたネットワークドライブに移動し、ドライブ文字を変更したことです。

TortoiseGitはネットワークドライブを監視するように設定する必要があるようです-これはデフォルトの動作ではありません。

したがって、この問題を解決するには次のようにします。

  • リポジトリフォルダーを右クリックします
  • 「TortoiseGit」を選択
  • 「設定」を選択します
  • [アイコンオーバーレイ]を選択します
  • 「ネットワークドライブ」にチェックマークを付けます

仕事完了。

0
UKcentric

ここにある他のオプションはどれも問題を解決するものではありません。 (大文字と小文字が変更されたファイルを特定できませんでした)すべてが正常にチェックインされていると確信していたので、ただレポを削除してもう一度チェックアウトしました。失礼、再び動作します。

自信がない場合(または最善の方法でリスクを回避したい場合)、リポジトリフォルダーの名前をlcoallyに変更し、リポジトリを再度チェックアウトします。 2つのリポジトリフォルダー間で変更されました。

0
Thomas Mulder

これが役立つかもしれません...私のドライブ文字はB:で、オーバーレイアイコンは更新されません。 C:を超えて変更し(M:を使用)、動作し始めました。 TGITはCを下回らないようです。

0
Wireless