Berikut adalah skrip Perl yang mencetak perintah Git diff untuk file yang diberikan seperti yang ditemukan dalam perintah Git log.
Misalnya
git log pom.xml | perl gldiff.pl 3 pom.xml
Hasil:
git diff 5cc287:pom.xml e8e420:pom.xml
git diff 3aa914:pom.xml 7476e1:pom.xml
git diff 422bfd:pom.xml f92ad8:pom.xml
yang kemudian dapat dipotong dan disisipkan dalam sesi jendela shell atau disalurkan ke /bin/sh
.
Catatan:
- angka (3 dalam hal ini) menentukan berapa banyak garis untuk dicetak
- file (pom.xml dalam kasus ini) harus setuju di kedua tempat (Anda bisa membungkusnya dalam fungsi shell untuk menyediakan file yang sama di kedua tempat) atau meletakkannya di direktori biner sebagai skrip shell
Kode:
# gldiff.pl
use strict;
my $max = shift;
my $file = shift;
die "not a number" unless $max =~ m/\d+/;
die "not a file" unless -f $file;
my $count;
my @lines;
while (<>) {
chomp;
next unless s/^commit\s+(.*)//;
my $commit = $1;
push @lines, sprintf "%s:%s", substr($commit,0,6),$file;
if (@lines == 2) {
printf "git diff %s %s\n", @lines;
@lines = ();
}
last if ++$count >= $max *2;
}
..
tidak benar-benar diperlukan, meskipun itu akan bekerja dengannya (kecuali dalam versi yang cukup lama, mungkin). Anda juga dapat menggunakangit log
ataugitk
menemukan SHA1 untuk digunakan, jika kedua komit tersebut terpisah sangat jauh.gitk
juga memiliki "diff selected -> this" dan "diff this -> selected" dalam menu konteksnya.