এখানে বেশিরভাগ উত্তরগুলি আউটপুটটির বিশদকরণকে জটিল করে তুলেছে git branch -r
। আপনি নিম্নলিখিত ব্যবহার করতে পারেনfor
যেমন রিমোটের সমস্ত শাখার বিপরীতে ট্র্যাকিং শাখা তৈরি করতে লুপটি ।
উদাহরণ
বলুন আমার এই প্রত্যন্ত শাখা আছে।
$ git branch -r
origin/HEAD -> origin/master
origin/development
origin/integration
origin/master
origin/production
origin/staging
নিশ্চিত করুন যে আমরা ইতিমধ্যে স্থানীয়ভাবে মাস্টার ব্যতীত অন্য কিছু ট্র্যাক করছি না:
$ git branch -l # or using just git branch
* master
ট্র্যাকিং শাখা তৈরি করতে আপনি এই একটি লাইনার ব্যবহার করতে পারেন:
$ for i in $(git branch -r | grep -vE "HEAD|master"); do
git branch --track ${i#*/} $i; done
Branch development set up to track remote branch development from origin.
Branch integration set up to track remote branch integration from origin.
Branch production set up to track remote branch production from origin.
Branch staging set up to track remote branch staging from origin.
এখন নিশ্চিত করুন:
$ git branch
development
integration
* master
production
staging
এগুলি মুছতে:
$ git br -D production development integration staging
Deleted branch production (was xxxxx).
Deleted branch development (was xxxxx).
Deleted branch integration (was xxxxx).
Deleted branch staging (was xxxxx).
আপনি যদি -vv
স্যুইচ ব্যবহার করেন তবে আপনি git branch
নিশ্চিত করতে পারেন:
$ git br -vv
development xxxxx [origin/development] commit log msg ....
integration xxxxx [origin/integration] commit log msg ....
* master xxxxx [origin/master] commit log msg ....
production xxxxx [origin/production] commit log msg ....
staging xxxxx [origin/staging] commit log msg ....
লুপ জন্য ব্রেকডাউন
লুপটি মূলত কমান্ডটি কল করে git branch -r
, আউটপুট ব্যবহার করে কোনও HEAD বা মাস্টার শাখা ফিল্টার করে grep -vE "HEAD|master"
। কেবল শাখাগুলির বিয়োগফলের নাম পাওয়ার জন্য origin/
আমরা ব্যাশের স্ট্রিং ম্যানিপুলেশন ব্যবহার করি ${var#stringtoremove}
। এটি ভ্যারিয়েবল থেকে স্ট্রিংটি "স্ট্রিংটোরমোভ" সরিয়ে ফেলবে $var
। আমাদের ক্ষেত্রে আমরা origin/
ভেরিয়েবল থেকে স্ট্রিং সরিয়ে ফেলছি $i
।
দ্রষ্টব্য: বিকল্পভাবে আপনি এটি করতে এটি ব্যবহার করতে পারেন git checkout --track ...
:
$ for i in $(git branch -r | grep -vE "HEAD|master" | sed 's/^[ ]\+//'); do
git checkout --track $i; done
তবে আমি এই পদ্ধতির জন্য বিশেষত যত্ন নিই না, যেহেতু এটি আপনাকে একটি শাখাগুলি সম্পাদন করে শাখাগুলির মধ্যে স্যুইচ করে। এটি হয়ে গেলে এটি আপনাকে তৈরি করা সর্বশেষ শাখায় ছেড়ে দেবে।
তথ্যসূত্র
git checkout --track origin/branchname