2016-12-28 7 views
1

Wenn ich versuche, die Git-Geschichte von Visual Studio zu sehen, erhalte ich die folgende Fehlermeldung.Git Fehler Commit-Verlauf

Nach dem Ausführen des Befehls git fschk konnte ich den folgenden Fehler identifizieren, der verursacht wird, weil das Commit keine Informationen über den Autor und die Datumsinformationen enthält.

error in commit 8b47c4645d38edf9f8d104c3b6cc9e015fd5cdd4: 
missingEmail: invalid author/committer line - missing email 

Und nach versuchen, die Geschichte begehen bekommen gitk

expected integer but got "Bruno" 
expected integer but got "Bruno" 
    while executing 
"ParseFormatArgs {*}$args" 
    (procedure "::tcl::clock::format" line 6) 
    invoked from within 
"clock format [lindex $d 0] -format $datetimeformat" 
    (procedure "formatdate" line 25) 
    invoked from within 
"formatdate [lindex $info 2]" 
    (procedure "selectline" line 87) 
    invoked from within 
"selectline $l 1" 
    (procedure "selcanvline" line 18) 
    invoked from within 
"selcanvline .tf.histframe.pwclist.canv 189 109" 
    (command bound to event) 

Wie könnte ich das beheben kann?

+0

Ja, Sie haben eine schlechte Commit (von Software gemacht, die nicht den internen Regeln folgte) und einige Ihrer Werkzeuge können nicht damit umgehen. Was ist deine * Frage *? – torek

+0

Wie könnte ich die Informationen über diese Registrierung beheben? –

Antwort

4

Leider kann (1) gitk nicht mit einem schlechten Commit umgehen und (2) Sie können keinen Commit ändern. Dies lässt Sie mit zwei Optionen (nicht „das Tool nicht verwenden, die nicht mit dem Problem umgehen können“):

  • Eigentlich das Problem beheben: Kopieren Sie die Repository in ein neues, anderes Repository, das tut habe kein schlechtes Commit. Wenn dieses Repository neu ist, so dass andere nicht davon abhängig sind, dass die Hash-IDs für das Commit übernommen werden, ist dies wahrscheinlich der beste Ansatz. (Sie haben aus irgendeinem Grund diese sowie markiert, so dass ich keine Erfahrung mit der Konvertierung zwischen den beiden habe, und was passiert, wenn Sie ein konvertiertes Repository umschreiben, aber ich würde erwarten, dass das nicht funktioniert gut.)

    Dies erfordert in der Regel git filter-branch, die etwas schwierig zu bedienen ist. Durchsuchen Sie StackOverflow nach Beispielen für die Verwendung von Filter-Branch oder sehen Sie sich die verknüpfte Frage unten an.

  • Papier über das Problem: Verwenden Sie git replace, um ein Ersatz-Commit für das fehlerhafte Commit einzufügen. Das Ersatz-Commit wird genau wie das fehlerhafte Commit außer sein, dass es gültige Author- und Committer-Zeilen haben wird. Wenn Git das schlechte Original-Commit betrachtet, wird es stattdessen seine "Augen" auf das Ersetzen richten und stattdessen das gute Commit sehen. Der Nachteil des Ersetzens besteht darin, dass sie nicht automatisch in neue Klone kopiert werden (sie können aber später manuell kopiert werden) werden automatisch.

Hinweis, dass ein Weg, der vielleicht am einfachsten, um tatsächlich das Problem zu beheben git replace zu Papier über, es zu benutzen ist, dann git filter-branch der Ersatz permanent zu machen. Dies ist ähnlich der Verwendung von Grafts in VonC Antwort auf What does git filter-branch with no arguments do?