ব্যবহার করে শুধুমাত্র bash, diff, tput, এবং less, আমরা ঘনিষ্ঠভাবে আউটপুট অনুমান করতে পারে git diff। diffপ্রোগ্রামারদের স্বল্পদৃষ্টির কারণে কিছু উল্লেখযোগ্য পার্থক্য থাকবে ।
নিম্নলিখিত বাশ ফাংশন সংজ্ঞাটি এমন কোনও ফাইলে রাখুন যা আপনার ব্যবহারকারীর অ্যাকাউন্ট থেকে স্বয়ংক্রিয়ভাবে উত্স হয়ে যায় এবং আপনি কমান্ড লাইন থেকে ফাংশনটি অ্যাক্সেস করতে সক্ষম হবেন:
function gdiff()
{
local REG=`tput op`
local GRP=`tput setaf 6`
local ADD=`tput setaf 2`
local REM=`tput setaf 1`
local NL=$'\n'
local GRP_LABEL="${GRP}@@ %df,%dn +%dF,%dN @@${REG}"
local UNCH_GRP_FMT=''
[[ "${1}" == '@full' ]] && {
UNCH_GRP_FMT="${GRP_LABEL}${NL}%="
shift
}
diff \
--new-line-format="${ADD}+%L${REG}" \
--old-line-format="${REM}-%L${REG}" \
--unchanged-line-format=" %L${REG}" \
--new-group-format="${GRP_LABEL}${NL}%>" \
--old-group-format="${GRP_LABEL}${NL}%<" \
--changed-group-format="${GRP_LABEL}${NL}%<%>" \
--unchanged-group-format="${UNCH_GRP_FMT}" \
"${@}" | less -FXR
}
এই ফাংশনটি নিম্নলিখিত হিসাবে কাজ করে:
- শেষ পর্যন্ত,
diffফাইলগুলির মধ্যে কীভাবে পরিবর্তনগুলি প্রদর্শিত হবে তা নির্দিষ্ট করতে বিভিন্ন ফর্ম্যাটিং বিকল্পের সাথে আহ্বান জানানো হয়।
tputএই ফর্ম্যাটিং বিকল্পগুলিতে এএনএসআই রঙ কোড সন্নিবেশ করানোর জন্য ব্যবহৃত হয়। নোট যখন অ ANSI টার্মিনাল ব্যবহার করার মাধ্যমে আপনি প্রতিস্থাপন করতে থাকতে পারে tput setafসঙ্গে tput setf।
- এর আউটপুট
diffপাইপ করা হয় less। -Rএএনএসআই রঙগুলি সংরক্ষণ করার অনুমতি দেয়। -Xবাইরে বেরোনোর lessপরে পর্দা সাফ করা থেকে বাধা দেয় । যদি পর্দার মধ্যে আউটপুট ফিট করে তবে পেজার হিসাবে অপারেটিং করা থেকে -Fবাধা দেয় less।
- যদি প্রথম প্যারামিটার হয়
@fullতবে ফাংশনটি যুক্ত এবং সরানো রেখাগুলির পাশাপাশি সমস্ত অপরিবর্তিত রেখাগুলি প্রদর্শন করবে।
এই পদ্ধতির এবং এর মধ্যে নিম্নলিখিত পার্থক্যগুলি নোট করুন git diff:
git diffপ্রতিটি পরিবর্তনের চারপাশে তিন লাইন প্রসঙ্গে রিপোর্ট করে। দুর্ভাগ্যক্রমে, diffআপনি একই সাথে বিন্যাসের বিকল্পগুলি নির্দিষ্ট করার সাথে সাথে প্রসঙ্গের রেখার সংখ্যা উল্লেখ করতে চাইলে অভিযোগ এবং প্রস্থান করার বিষয়টি মনে হচ্ছে। (কমপক্ষে এটি ম্যাক ওএস এক্স জোসেমাইটে করে)। ধন্যবাদ diffপ্রোগ্রামাররা। অতএব, আপনি হয় প্রতিটি পরিবর্তনকে ঘিরে কোনও প্রসঙ্গের রেখাকে অনুরোধ করতে পারবেন না এটিই ডিফল্ট আচরণ, অথবা আপনি @fullপ্রথম প্যারামিটার হিসাবে উল্লেখ করে ফাইলের মধ্যে থাকা সমস্ত অপরিবর্তিত রেখাগুলিরও প্রতিবেদন করার জন্য অনুরোধ করতে পারেন ।
- প্রসঙ্গের রেখাগুলি পৃথক হওয়ার কারণে
git diff, এই ফাংশনটির দ্বারা প্রতিবেদন করা লাইন নম্বরগুলিও রিপোর্ট করা থেকে পৃথক হবে git diff।
- আপনি রিপোর্ট করা একক-লাইন পরিবর্তনের উপস্থিতি দেখতে পাবেন যা সঠিক আচরণ, তবে বিরক্তিকর যখন আপনার পরিবর্তিত ফাইলে একক খালি লাইনের সন্নিবেশ থাকে। আমি মনে করি
git diffএর প্রসঙ্গের লাইনের মাধ্যমে এটি আরও ভালভাবে ডিল করে। আপনি diffযদি পছন্দ করেন তবে হোয়াইটস্পেসের সাথে আরও ভাল ব্যবহার করার জন্য আপনি বিভিন্ন বিকল্পগুলি পার করার চেষ্টা করতে পারেন।
newtextমধ্যে/etc/colordiff। আমি মনে করি গিট সবুজ ব্যবহার করে?