এখানে এমন একটি সমাধান রয়েছে যা গিটের উরফ সংজ্ঞায়িত করে, সুতরাং আপনি এটির মতো এটি ব্যবহার করতে সক্ষম হবেন:
git rblame -M -n -L '/REGEX/,+1' FILE
আউটপুট উদাহরণ:
00000000 18 (Not Committed Yet 2013-08-19 13:04:52 +0000 728) fooREGEXbar
15227b97 18 (User1 2013-07-11 18:51:26 +0000 728) fooREGEX
1748695d 23 (User2 2013-03-19 21:09:09 +0000 741) REGEXbar
আপনি আপনার .gitconfig এ উপন্যাসটি সংজ্ঞায়িত করতে পারেন বা কেবল নিম্নলিখিত কমান্ডটি চালাতে পারেন
git config alias.rblame !sh -c 'while line=$(git blame "$@" $commit 2>/dev/null); do commit=${line:0:8}^; [ 00000000^ == $commit ] && commit=$(git rev-parse HEAD); echo $line; done' dumb_param
এটি একটি কুরুচিপূর্ণ এক-লাইনার, সুতরাং এখানে একটি ডি-অবফসকেটেড সমমানের বাশ ফাংশন রয়েছে:
git-rblame () {
local commit line
while line=$(git blame "$@" $commit 2>/dev/null); do
commit="${line:0:8}^"
if [ "00000000^" == "$commit" ]; then
commit=$(git rev-parse HEAD)
fi
echo $line
done
}
পিক্যাক্স সলিউশন ( গিট লগ - পিক্সেক্স-রিজেক্স-এস'আরজিএক্স ' ) কেবল আপনাকে রেখার সংযোজন / মুছে ফেলা দেবে, নিয়মিত অভিব্যক্তি সম্বলিত লাইনের অন্যান্য পরিবর্তনগুলি নয়।
এই সমাধানের একটি সীমাবদ্ধতা হ'ল গিট দোষ কেবলমাত্র 1 ম REGEX ম্যাচটি দেয়, সুতরাং একাধিক ম্যাচ উপস্থিত থাকলে পুনরাবৃত্তি অন্য লাইনটি অনুসরণ করতে "লাফিয়ে" যেতে পারে। এই "লাফানো" চিহ্নিত করার জন্য পুরো ইতিহাসের আউটপুটটি পরীক্ষা করে দেখুন এবং তারপরে পরজীবী লাইনগুলিকে উপেক্ষা করার জন্য আপনার REGEX ঠিক করুন fix
পরিশেষে, এখানে একটি বিকল্প সংস্করণ যা সম্পূর্ণ প্রতিচ্ছবি পেতে প্রতিটি প্রতিশ্রুতিতে গিট শো চালায়:
git config alias.rblameshow !sh -c 'while line=$(git blame "$@" $commit 2>/dev/null); do commit=${line:0:8}^; [ 00000000^ == $commit ] && commit=$(git rev-parse HEAD); git show $commit; done' dumb_param