นี่คือสคริปต์ Perl ที่พิมพ์คำสั่ง Git diff สำหรับไฟล์ที่กำหนดตามที่พบในคำสั่ง Git log
เช่น
git log pom.xml | perl gldiff.pl 3 pom.xml
อัตราผลตอบแทน:
git diff 5cc287:pom.xml e8e420:pom.xml
git diff 3aa914:pom.xml 7476e1:pom.xml
git diff 422bfd:pom.xml f92ad8:pom.xml
/bin/sh
ซึ่งก็อาจจะมีการตัดและวางในเซสชั่นหน้าต่างเปลือกหรือประปา
หมายเหตุ:
- หมายเลข (3 ในกรณีนี้) ระบุจำนวนบรรทัดที่จะพิมพ์
- ไฟล์ (pom.xml ในกรณีนี้) จะต้องตกลงกันในทั้งสองแห่ง (คุณสามารถใส่ไว้ในฟังก์ชั่นเชลล์เพื่อให้ไฟล์เดียวกันในทั้งสองที่) หรือวางไว้ในไดเรกทอรีไบนารีเป็นสคริปต์เชลล์
รหัส:
# 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;
}
..
ไม่จำเป็นจริงๆแม้ว่ามันจะทำงานกับมัน (ยกเว้นในรุ่นเก่าเป็นธรรมอาจจะ) นอกจากนี้คุณยังสามารถใช้git log
หรือgitk
ค้นหา SHA1 ที่จะใช้หากการกระทำทั้งสองอยู่ห่างกันมากgitk
นอกจากนี้ยังมี "diff select -> this" และ "diff this -> selected" ในเมนูบริบท