গিটের ফিল্টার-শাখা কমান্ডটি শক্তিশালী, তবে অপ্রয়োজনীয় যে কোনও কিছুর জন্য ব্যবহার করা মারাত্মকভাবে অযৌক্তিক, উদাহরণস্বরূপ, যদি আপনার একাধিক লেখক সংশোধন করতে পারেন।
আমি এখানে একটি বিকল্প খুঁজে পেয়েছি যা দরকারী, যা গিট-শর্টলগ ম্যানপেজে বর্ণিত .mailmap বৈশিষ্ট্যটি ব্যবহার করে। এটি কোনও লেখকের ম্যাপিং প্রক্রিয়া সরবরাহ করে যা আমরা গিট লগের বিন্যাস সুবিধা সহ ব্যবহার করতে পারি। আমরা এটি ব্যবহারের একটি নামযুক্ত ক্রম সংশোধন ও সংশোধন করার জন্য আদেশগুলি উত্পন্ন করতে ব্যবহার করতে পারি।
উদাহরণস্বরূপ, ধরুন আপনি কোনও শাখা $ ব্রাঞ্চে লেখকত্ব সংশোধন করতে চান, প্রতিশ্রুতিবদ্ধ $ START থেকে শুরু করে।
আপনার সংগ্রহস্থলের শীর্ষ ডিরেক্টরিতে আপনাকে একটি মেইলম্যাপ ফাইল তৈরি করতে হবে যা বিদ্যমান লেখকের নামগুলি মানচিত্রের সাথে মানচিত্র করে। আপনি এটির সাথে বিদ্যমান লেখকের নামের একটি তালিকা পেতে পারেন:
git shortlog -se
আপনার (মেইল) এর মতো একটি মেইলম্যাপ ফাইলটি শেষ করতে হবে:
You <you@somewhere.org> cowens@localmachine
You <you@somewhere.org> root@localmachine
এখন আপনি it ব্রাঞ্চকে $ ব্রাঞ্চ 2 হিসাবে পুনরায় লেখার কমান্ড তৈরি করতে গিট লগের বিন্যাস বৈশিষ্ট্যটি ব্যবহার করতে পারেন।
git checkout -b $BRANCH2 $START
git log --reverse --pretty=format:"cherry-pick %H; commit --amend --author='%aN <%aE>' -C %H" $START..$BRANCH | sh -
প্রথম কমান্ডটি কমিট $ START থেকে অঙ্কিত নতুন খালি শাখা তৈরি করে। Commit START থেকে তারপরে $ শাখার শেষের মধ্যে প্রতিটি কমিটের জন্য, দ্বিতীয় কমান্ড চেরি বর্তমান শাখা $ BRANCH2 এর শেষের দিকে মূল প্রতিশ্রুতি রাখে এবং লেখককে সঠিকভাবে সেট করার জন্য এটি সংশোধন করে।
এটি সাধারণত প্রযোজ্য - এটি আপনার ~ / .gitconfig এ রাখুন:
[alias]
# git reauthor $START..$END
reauthor = !sh -c 'eval `git log --reverse --topo-order --pretty=format:\"git cherry-pick %H && git commit --amend -C %H --author=\\\"%aN <%aE>\\\" && \" $0 ` "echo success" '
সুতরাং যখন আপনার লেখকদের সংশোধন করার দরকার আছে, এখন আপনাকে ঠিক তখনই একটি .mapfile উত্পন্ন করতে এবং করতে হবে:
git checkout -b $BRANCH2 $START
git reauthor $START..$BRANCH
মূল শাখা রেফ নতুনকে পুনরায় নিয়োগ দেওয়া যেতে পারে এবং নতুনটি মুছে ফেলা হয়েছে:
git checkout $BRANCH
git reset --hard $BRANCH2 # be careful with this command
git branch -d $BRANCH2
git
এর অনুরূপ উদ্দেশ্যে ব্যবহার সম্পর্কিত প্রশ্নগুলি আরও ভাল জিজ্ঞাসা করা হয় ।