यहाँ एक पर्ल स्क्रिप्ट है जो Git को प्रिंट करता है एक दिए गए फ़ाइल के लिए Git लॉग कमांड में पाया गया है।
उदाहरण के लिए
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
SHA1s खोजने के लिए भी उपयोग कर सकते हैं, क्या दो कमेंट्स बहुत दूर होने चाहिए।gitk
इसके संदर्भ मेनू में "भिन्न चयनित -> यह" और "इसे अलग करें -> चयनित" भी है।