Wenn ich eine Datei mit gits beschuldige (mit msysgit), erhalte ich immer die folgende Art von Ausdruck:
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 1) package co
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 2) {
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 3) impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 4) impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 5) impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 6) impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200 7) impor
dh es werden alle Zeilen als noch nicht festgeschrieben angezeigt.
Ich habe dies bei vielen Dateien versucht, die viele Commits haben - immer die gleichen Ergebnisse. Ich habe auch versucht, einen relativen / vollständigen Pfad zu verwenden, aber es scheint keinen Unterschied zu machen.
Wenn ich versuche, die Schuld von TortoiseGit zu verwenden, wird jede Zeile beim ersten Festschreiben immer als zuletzt festgeschrieben angezeigt:
Ich dachte sogar, wie gesagt, es gibt tatsächlich Dutzende von Commits in der Geschichte dieser Dateien.
Ideen?
Bearbeiten - Weitere Informationen
- Git Schuld funktioniert gut auf GitHub, wo dieses Repo gehostet wird.
- Es funktioniert auch gut, wenn ich es auf einen Linux-Rechner klone und dort die Schuld trage
- Es scheint, dass dies nur auf msysgit nicht funktioniert
git
windows-subsystem-for-linux
msysgit
blame
Assaf Lavie
quelle
quelle
Antworten:
git blame file.txt
beschuldigt die Version von file.txt in Ihrer Arbeitskopie. Wenn file.txt Windows-Newlines (CRLF) im Repo enthält und Sie habencore.autocrlf = true
, wird jede Zeile von file.txt als anders betrachtet undgit blame
als noch nicht festgeschrieben gemeldet .Der Grund, warum
git blame <my_branch>
(oder noch bessergit blame HEAD
, was funktioniert, egal in welchem Zweig Sie sich befinden) funktioniert, ist, dass die Arbeitskopie-Version nicht beschuldigt wird, sodass kein Potenzial für Zeilen besteht, die noch nicht festgeschrieben wurden.quelle
git blame -w
ignoriert das Leerzeichen, so dass Sie immer noch die Arbeitskopie beschuldigen können, wenn gewünschtFand die Lösung - sehr komisch.
Wenn ich das mache:
Die Geschichte ist gebrochen, wie oben angegeben.
Wenn ich das stattdessen mache:
Es klappt!
Dies ist sehr seltsam, da für die Verwendung von AFAICS kein Filialname erforderlich ist:
quelle
git blame mybranch cmakelists.txt
und es wird scheitern; aber wenn ich schreibegit blame mybranch CMakeLists.txt
, wird es funktionieren.Ab Git 2.0.1 (25. Juni 2014) sollte Git Blit aufhören, alle diese "Noch nicht festgeschriebenen" Zeilen zu melden.
Siehe Commit 4d4813a (26. April 2014) von Brian M. Carlson (
bk2204
) .(Zusammengeführt von Junio C Hamano -
gitster
- in Commit e934c67 , 06. Juni 2014)quelle
git config -l
Ausgabe (und einem Link zurück zu dieser Antwort) eine neue Frage hinzufügen, die das Problem veranschaulicht? Auf diese Weise können ich und andere versuchen, festzustellen, ob das Problem weiterhin besteht.Eine andere Möglichkeit: Tippfehler zwischen Groß- und Kleinschreibung
Ich hatte das gleiche Problem mit git tad file.txt und stellte dann fest, dass ich mit file.txt einen Tippfehler beim Dateinamen gemacht hatte
Es wurde beispielsweise in File.txt geändert, und ich habe die erwarteten Ergebnisse erhalten, ohne dass my_branch: git tad File.txt angegeben werden musste
quelle