আপনি এটি কেবল একটি গিট কমান্ড দিয়ে করতে পারবেন না তবে আপনি এটি একটি ব্যাশ লাইনের সাথে স্বয়ংক্রিয় করতে পারেন।
সমস্ত শাখাকে নিরাপদে একটি লাইনের সাথে আপডেট করতে, আমি এখানে যা করছি:
git fetch --all && for branch in $(git branch | sed '/*/{$q;h;d};$G' | tr -d '*') ; do git checkout $branch && git merge --ff-only || break ; done
যদি এটি একটি শাখাকে দ্রুত-ফরওয়ার্ড করতে না পারে বা কোনও ত্রুটির মুখোমুখি হয় না, তবে এটি থামবে এবং আপনাকে সেই শাখায় ছেড়ে দেবে যাতে আপনি নিয়ন্ত্রণ ফিরে নিতে পারেন এবং ম্যানুয়ালি মার্জ করতে পারেন।
যদি সমস্ত শাখা দ্রুত-ফরওয়ার্ড করা যায় তবে আপনি বর্তমানে যে শাখায় ছিলেন সেটির সাথে এটি শেষ হবে, আপডেট করার আগে আপনি যেখানে ছিলেন সেখানে রেখে।
ব্যাখ্যা:
আরও ভাল পঠনযোগ্যতার জন্য এটি কয়েকটি লাইনে বিভক্ত হতে পারে:
git fetch --all && \
for branch in $(git branch | sed '/*/{$q;h;d};$G' | tr -d '*')
do git checkout $branch && \
git merge --ff-only || break
done
git fetch --all && ... => সমস্ত রিমোট থেকে সমস্ত রেফারস এনে দেয় এবং কোনও ত্রুটি না থাকলে পরবর্তী কমান্ড দিয়ে চালিয়ে যান।
git branch | sed '/*/{$q;h;d};$G' | tr -d '*'=> এর আউটপুট থেকে git branch, sedএকটি দিয়ে লাইনটি *এনে শেষ পর্যন্ত সরিয়ে দিন (যাতে বর্তমান শাখাটি সর্বশেষে আপডেট হবে)। তারপর trকেবল অপসারণ *।
for branch in $(...) ; do git checkout $branch && git merge --ff-only || break ; done=> পূর্ববর্তী কমান্ড থেকে প্রাপ্ত প্রতিটি শাখার নামের জন্য, এই শাখাটি চেকআউট করুন এবং দ্রুত-ফরওয়ার্ডের সাথে একত্রীকরণের চেষ্টা করুন। যদি এটি ব্যর্থ হয়, breakডাকা হয় এবং কমান্ডটি এখানেই বন্ধ হয়।
অবশ্যই, আপনি প্রতিস্থাপন করতে পারেন git merge --ff-onlyসঙ্গে git rebaseযদি তা না হয় আপনি যা চান তা।
অবশেষে, আপনি এটি আপনার বাশার্কে একটি নাম হিসাবে রাখতে পারেন :
alias git-pull-all='git fetch --all && for branch in $(git branch | sed '\''/*/{$q;h;d};$G'\'' | tr -d "*") ; do git checkout $branch && git merge --ff-only || break ; done'
অথবা যদি আপনি 'এবং' এর সাথে জগাখিচুড়ি করতে ভয় পান, বা আপনি কেবল আপনার সম্পাদকটিতে সিনট্যাক্টিক পাঠযোগ্যতা বজায় রাখতে পছন্দ করেন তবে আপনি এটিকে একটি ফাংশন হিসাবে ঘোষণা করতে পারেন:
git-pull-all()
{
git fetch --all && for branch in $(git branch | sed '/*/{$q;h;d};$G' | tr -d '*') ; do git checkout $branch && git merge --ff-only || break ; done
}
বোনাস:
যারা এই sed '/*/{$q;h;d};$G'অংশে ব্যাখ্যাটি চান তাদের জন্য :
/*/=> একটি দিয়ে রেখাটি অনুসন্ধান করুন *।
{$q => যদি এটি শেষ লাইনে থাকে তবে প্রস্থান করুন (আমাদের কিছু করার দরকার নেই কারণ বর্তমান শাখাটি ইতিমধ্যে তালিকার শেষটি রয়েছে)।
;h;d} => অন্যথায়, হোল্ড বাফারে লাইনটি সংরক্ষণ করুন এবং এটি বর্তমান তালিকার অবস্থানে মুছুন।
;$G => এটি শেষ লাইনে পৌঁছালে হোল্ডার বাফারের সামগ্রী যুক্ত করুন।