Wenn ich die Frage richtig verstehe, möchten Sie herausfinden, wer ursprünglich eine Zeile hinzugefügt hat, die gerade gelöscht wurde? Zum Beispiel, in this commit sehen wir die Zeile =head1 C<import>
gelöscht. Wer hat diese Zeile ursprünglich geschrieben?
--- a/lib/perl5i.pm
+++ b/lib/perl5i.pm
@@ -1118,27 +1118,29 @@ Example:
from CPAN or another repository. Your library paths are:
Indented list of paths, 1 per line...
-=head1 C<import>
-This subroutine is called automatically, see L<perlfunc/import>.
+=head1 Turning off features
...
Der gewünschte Befehl lautet git blame
. Dies zeigt an, welcher Commit die letzte Zeile geändert hat. In unserem Beispiel würde git blame lib/perl5i.pm
uns zeigen, wer zuletzt jede Zeile der Datei berührt hat.
b755dda5 (Michael G. Schwern 2009-04-22 21:29:08 -0700 1) package perl5i;
b755dda5 (Michael G. Schwern 2009-04-22 21:29:08 -0700 2)
8baa7538 (Michael G. Schwern 2010-01-29 21:34:14 -0800 3) ######################################
a6231688 (Michael G. Schwern 2010-03-14 13:55:50 -0700 4) # The real code is in perl5i::2 #
8baa7538 (Michael G. Schwern 2010-01-29 21:34:14 -0800 5) # Please patch that #
8baa7538 (Michael G. Schwern 2010-01-29 21:34:14 -0800 6) ######################################
...
Das ist das Commit, der Name des Autors, wenn das Commit passiert ist, und die Zeile.
Dies ist nicht unbedingt der ursprüngliche Autor der Linie. Selbst ein Commit, das eine einfache Whitespace-Änderung bewirkt, wird angezeigt. Um dies zu vermeiden, fügen Sie -w
hinzu, um Leerzeichen zu ignorieren. git blame -w lib/perl5i.pm
.
Aber das ist für das aktuelle Commit. Sie können nach einer Schuld für ein bestimmtes Commit fragen, unser Beispiel ist 4519fb29cef
, das die Zeile löschte. Wenn wir git blame -w lib/perl5i.pm 4519fb29cef
tun, ist die Zeile bereits gelöscht worden, so dass es nicht in der Schuld erscheinen wird. Tun Sie stattdessen eine git blame
auf dem vorherigen Commit. git blame -w lib/perl5i.pm 4519fb29cef^
.
...
4afdb783 (Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 2013-03-01 11:16:27 +0100 1121) =head1 C<import>
4afdb783 (Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 2013-03-01 11:16:27 +0100 1122)
4afdb783 (Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 2013-03-01 11:16:27 +0100 1123) This subroutine is called automatically, see L<perlfunc/import>.
...
Commit 4afdb783
von Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯
zuletzt diese Linie berührt. Da Änderungen manchmal trivial sein können, tun Sie eine git log -p 4afdb783
, um zu überprüfen, dass es eine signifikante Änderung ist. Wenn nicht, mach das Gleiche noch einmal. Führen Sie git blame
auf dem Commit vor diesem: git blame -w 4afdb783^
. Fahren Sie fort, bis Sie zu einer signifikanten Veränderung kommen.
Die Person, die die Zeilen in einem Commit gelöscht hat, ist dieselbe Person, die das Commit durchgeführt hat. Ich glaube nicht, dass Sie das fragen. Könnten Sie das klären? – Schwern
Mit einem bestimmten Commit können Sie wissen, welche Codezeile in einem Repository gelöscht oder hinzugefügt wurde. Die gelöschte Codezeile gehört einer anderen Person, die ursprünglich mit einem anderen Commit zum Repository hinzugefügt wurde. Ich möchte diesen Benutzer finden. Ich hoffe, es ist klar genug. –
Wenn ich Sie richtig verstehe, möchten Sie herausfinden, wer ursprünglich eine gerade gelöschte Zeile hinzugefügt hat? – Schwern