Das von TortoiseGit geänderte Zeichen (Symbolüberlagerung) wird nicht aktualisiert

74

Ich habe eine kleine Änderung an einem Code vorgenommen, aber TortoiseGit zeigt ihn als geändert an (rotes Ausrufezeichen), obwohl ich festgeschrieben, gezogen, gedrückt habe, aber er bleibt. Was soll ich hier machen? Ich habe dieses Problem noch nicht gesehen.

Buchhändler
quelle
Nehmen Sie einen Unterschied, Sie sollten in der Lage sein zu sehen, was sich geändert hat. Es kann auch ein Problem mit der
Aktualisierung des

Antworten:

119

Ich nehme an, Sie verwenden Schildkrötengit? Ich hatte das Problem schon einmal, manchmal wurde es durch Drücken von F5Fixes behoben , manchmal verschwindet es einfach, nachdem sich die Schildkröte neu synchronisiert hat.

Hier ist eine weitere mögliche Lösung Link .

Die aktuelle Problemumgehung besteht darin, TGitCache.exe mit dem Windows-Task-Manager zu beenden.

Andy
quelle
1
Ich denke, es ist eine Schildkröte - danke, das werde ich versuchen. Alles, was ich getan habe, war, eine Kopie der Backfile-Datei zurückzuschreiben, nachdem ich den Code durcheinander gebracht hatte.
Buchhändler
1
Stellen Sie sicher, dass Sie die Änderungen tatsächlich festgeschrieben haben. Sie können feststellen, ob die Datei lokale Änderungen enthält, die den roten Ausruf verursachen würden, indem Sie mit der rechten Maustaste auf> tortoiseGit -> "Nach Änderungen suchen" klicken.
Andy
3
Stimmen Sie ab, um TGitCache.exe zu beenden. In wenigen Sekunden startet es automatisch wieder.
Sasha
5
4 Jahre später besteht das Problem immer noch und es gibt immer noch keine bessere Lösung als das Beenden von TGitCache ... das TortoiseGit-Team muss dieses Problem wirklich beheben. Overlays sind nutzlos, wenn sie nicht den aktuellen Status des Repos widerspiegeln.
Thomas Levesque
1
F5 hat das Problem nicht behoben, aber das Beenden von TGitCache.exe hat es für mich behoben. Upvoting!
Gabriel Hautclocq
41

Was mir geholfen hat, war Folgendes:

  1. Gehen Sie zu "Einstellungen -> Symbolüberlagerungen". Aktivieren Sie unter "Statuscache" die Option "Keine".
  2. Aktualisieren Sie den Explorer F5
  3. Gehen Sie zurück und ändern Sie die Cache-Option wieder auf "Standard".
neutcomp
quelle
3
Es funktioniert nicht ... es gibt den falschen Status zurück, wenn Standard ausgewählt ist ... Update: Es war notwendig, durch den Verzeichnisbaum zu "gehen". Jetzt werden die richtigen Symbole angezeigt.
Maxim
13

Kill TGitCache.exe funktioniert für mich. .... Ich habe dies als Antwort angegeben, weil ich nicht genügend Reputationspunkte habe, um es als Kommentar hinzuzufügen. Wollte aber weiter iterieren, dass es sich um eine funktionierende Lösung handelt.

Mike Gibson
quelle
1
Wenn dies eine gültige Antwort ist, kann es nicht schaden, sie als Antwort zu verwenden. Vielleicht möchten Sie etwas detaillierter erläutern, wie dies das Problem löst.
Kmeixner
Dies ist das einzige, was für mich funktioniert hat, aber ich weiß nicht, ob es sicher ist, nur TGitCache.exe zu töten. Ich scheine in Sicherheit zu sein, aber vielleicht trete ich nur die Dose die Straße hinunter.
Lucas
Doppelte Lösung zu Andys Lösung von 5 Jahren zuvor.
Thalia
12

Es gibt eine Problemumgehung, die ich versucht habe:

Benennen Sie das Verzeichnis des Repositorys um und ändern Sie es dann wieder, und Sie können loslegen!

Als Beispiel: MyComplexProject kann in MyComplexProject1 und dann wieder in MyComplexProject geändert werden .

meJustAndrew
quelle
2
Wenn es verrückt ist und funktioniert, ist es nicht verrückt. Danke dafür!
Xandermonkey
1
Dies funktionierte, nachdem das Beenden des Cache-Prozesses fehlgeschlagen war. Eine Datei nervte mich seit Monaten.
Erica Kane
Dies sollte die akzeptierte Lösung sein, da dies TortoiseGit tatsächlich zwingt, den Symbol-Overlay-Cache zu löschen. Den gesamten Prozess zu beenden scheint übertrieben.
Extragorey
10

Abgesehen von dem, was @Andy erwähnt hat, können Sie die Überlagerungen schneller arbeiten lassen, indem Sie die zu überwachenden Ordner einschränken.

Rechtsklick-> TortoiseGit -> Einstellungen -> Symbolüberlagerungen

Geben Sie hier Einschluss- und Ausschlusspfade ein. Normalerweise verweise ich ausdrücklich auf meine Repos / Arbeitskopien:

Geben Sie hier die Bildbeschreibung ein

Manojlds
quelle
8

Bitte überprüfen Sie Ihren Pfad, um festzustellen, ob er für den Fall übereinstimmt.

Some/Dir/SomeFile.ext

ist das gleiche für Windows wie

some/DIR/someFILE.EXT

Aber für Git sind sie an verschiedenen Orten. Dies wird behoben, indem Sie mit dem richtigen Gehäuse von oben nach hinten navigieren.

Adam Dymitruk
quelle
1
In meinem Fall wurde eine Datei mit dem Namen "resource.h" von Visual Studio in "Resource.h" umbenannt.
Kol
Ding Ding Ding. das war was geschah. Vielen Dank.
DrFloyd5
7

Ich hatte das gleiche Problem bei Windows.

Das Töten von TGitCache hat einige Sekunden lang funktioniert, aber das rote Symbol wurde erneut angezeigt.

Es stellte sich heraus, dass die Datei lokal umbenannt wurde (der erste Buchstabe wurde von Groß- in Kleinbuchstaben geändert), in Git jedoch nicht geändert wurde. Windows unterscheidet nicht zwischen Groß- und Kleinschreibung, Git jedoch! Die Symbolüberlagerung stimmte also nicht mehr überein. Ich habe dies herausgefunden, indem ich die spezifische Datei entfernt und "Zurücksetzen" aus dem Turtoise Git-Kontextmenü ausgewählt habe. In der Liste wurden zwei Dateien angezeigt, eine mit Großbuchstaben in Großbuchstaben und eine vollständig in Kleinbuchstaben.

Das endgültige Umbenennen der Datei aus dem Git-Kontextmenü hat das Problem für mich behoben.

Matthijs de Ridder
quelle
3
Dieser Thread begann am 15. November 11. Heute ist der 27. März 2018. Nun, mehr als 6 Jahre und es gibt keine Lösung? Komm schon Schildkröte!
JohnCz
In meinem Fall zeigte die gitlab-Benutzeroberfläche zwei Dateien mit unterschiedlichen Fällen. Entfernen Sie eine davon in der GUI, ziehen Sie Änderungen und setzen Sie die gelösten Änderungen zurück.
Aleha
Das war mein Problem. Ich habe den Fall der Bilderweiterung in meinem Projekt geändert und bin gerade zu alten Namen zurückgekehrt.
TazAstroSpacial
5

Wenn die Symbole nicht aktualisiert werden, können Sie den Symbol-Overlay-Cache mit dem folgenden Befehl "Ausführen" schnell beenden:

taskkill /f /im tgitcache.exe

Der Cache-Prozess sollte sich automatisch neu starten. Sie können dies sogar in eine Desktop-Verknüpfung verwandeln, wenn Sie feststellen, dass dies häufig vorkommt.

Simon East
quelle
2

Keine der anderen Optionen hier könnte das Problem lösen. (Ich konnte keine Datei identifizieren, bei der sich das Gehäuse geändert hat.) Ich war ziemlich sicher, dass alles so eingecheckt wurde, wie es sein sollte, also habe ich einfach mein Repo gelöscht und es erneut ausgecheckt . Poof, funktioniert wieder.

Wenn Sie nicht so sicher sind (oder es einfach nicht riskieren möchten, wie es am besten ist), benennen Sie Ihren Repo-Ordner lokal um und überprüfen Sie Ihr Repo erneut. Dann können Sie einen Diff ziehen, um zu sehen, ob etwas Seltsames fehlt. zwischen den beiden Repo-Ordnern geändert.

Thomas Mulder
quelle
2

Es ist ein bekanntes Problem in TortoiseGit. Es existiert seit Jahren und wird anscheinend nie repariert. Ich weiß nicht, ob es daran liegt, dass der TortoiseGit-Entwickler nicht bereit oder nicht in der Lage ist, dies zu tun. (Ich habe es auch schon einmal gemeldet, kann das Problem aber jetzt nicht mehr finden.)

Wie auch immer, ich tue Folgendes, um das Problem zu beheben:

git gc --prune=all --quiet

Es beschneidet das Git-Repository, packt alle diese Einzelobjektdateien neu, reduziert die Anzahl der Dateien .gitvon bis zu Zehntausenden auf unter 20 und verbessert wahrscheinlich die Gesamtleistung von Git-Operationen.

Manchmal macht Git nach einem Commit eine leichte Version davon alleine, aber ich habe dies in Jahren des täglichen Gebrauchs selten gesehen. Also mache ich es einfach selbst. Dies ist auch eine gute Maßnahme, die Sie in Betracht ziehen sollten, bevor Sie ein Backup des Systems erstellen (siehe unten).

Zur Vereinfachung habe ich eine Batchdatei git-gcall.cmdin einem zugänglichen Pfad erstellt, der den oben gezeigten Befehl aufruft. Ich muss es nach praktisch jedem Commit ausführen und nach 2-3 Sekunden aktualisieren sich die Symbole von selbst. Kein Mord beteiligt. Wachen Sie TortoiseGit nur etwas schwieriger auf, um das Repository tatsächlich zu beobachten und seinen Status zu aktualisieren.


Hier ist ein PowerShell-Skript, das diesen Befehl in einer Reihe konfigurierter Verzeichnisse rekursiv ausführt, falls erforderlich, um ihn vor dem Erstellen einer Sicherung zu verwenden. Es kann auch regelmäßig ausgeführt werden, beispielsweise über Nacht, um dieses Problem mit veralteten Symbolen im Hintergrund zu beheben.

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

Nennen Sie es mit der üblichen erforderlichen Batch-Datei:

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%
ygoe
quelle
1

Ich denke, dieses Problem ist mir aufgrund von Anwendungen passiert, die um Windows-Limit-Symbol-Overlays konkurrieren (ich glaube, es erlaubt maximal 15).

Folgendes musste ich tun, um dieses Problem zu beheben:

  1. Öffnen Sie regeditund navigieren Sie zum Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiersSchlüssel.
  2. Ordnen Sie die Unterschlüssel so an, dass sich die Tortoise * -Tasten oben befinden, indem Sie Leerzeichen voranstellen.
  3. Starten Sie den Windows Explorer mit dem Task-Manager neu.

Siehe auch: TortoiseGit zeigt keine Symbolüberlagerungen an

Dan Stevens
quelle
1

Die Lösung dieses Problems für uns war, dass wir unsere Git-Repos auf ein zugeordnetes Netzwerklaufwerk verschoben und so den Laufwerksbuchstaben geändert hatten.

Es scheint, dass TortoiseGit eingestellt werden muss, um Netzwerklaufwerke zu überwachen - dies ist nicht das Standardverhalten.

Um dieses Problem zu lösen, würden Sie:

  • Klicken Sie mit der rechten Maustaste auf einen Repo-Ordner
  • Wählen Sie "TortoiseGit"
  • Wählen Sie "Einstellungen"
  • Wählen Sie "Symbolüberlagerungen"
  • Kreuzen Sie "Netzwerklaufwerke" an

Job erledigt.

UKcentric
quelle
0

Dies könnte helfen ... Mein Laufwerksbuchstabe war B: und die Überlagerungssymbole wurden nicht aktualisiert. Ich habe es auf jenseits von C: geändert (ich habe M :) verwendet und es hat angefangen zu funktionieren. Es sieht so aus, als würde TGIT nicht unter C fahren:

Kabellos
quelle
Unter Symbolüberlagerungen gibt es eine separate Einstellung für "Laufwerke A: und B:" - diese Buchstaben wurden traditionell immer für Diskettenlaufwerke verwendet.
PeterJ
0

Nachdem ich mich darüber gewundert und so ziemlich alles ausprobiert hatte, gelang es mir, das Problem zu beheben, indem ich einfach eine einzelne Datei aus dem als geändert gekennzeichneten Verzeichnis löschte und sie dann aus dem TortoiseGit-Menü selbst zurücksetzte.

PS Ich habe vor und nach diesem Vorgang sichergestellt, dass die CRC64-Prüfsumme für das gesamte Verzeichnis identisch ist.

März 2377
quelle
0

Ich bin mir nicht sicher, ob dies relevant ist.

Es sieht so aus, als ob TortoiseGit Cache-Probleme mit Datei- / Ordnerfällen hat.

In meinem Fall wurde die Überlagerung der Symbole nicht angezeigt, da die Ordner-Groß- / Kleinschreibung nicht mit der einmal erwarteten übereinstimmt

Unterschied der Fälle von Z im Ordnernamen zeta

winzige Minerva
quelle