একটি রিমোট গিট রিপোজিটরি থেকে ব্রাঞ্চ ফেচ করতে এবং স্থানীয়ভাবে এটি নিয়ে কাজ শুরু করতে, আপনার রিপোজিটরিতে টার্মিনাল খুলুন, সঠিক রিমোট থেকে ফেচ করুন, তারপর রিমোট ব্রাঞ্চটিকে ট্র্যাক করে এমন একটি লোকাল ব্রাঞ্চ তৈরি করুন। উদাহরণস্বরূপ, git fetch origin-এর পরে git switch --track origin/feature/login চালালে origin/feature/login-এর সাথে যুক্ত একটি লোকাল feature/login ব্রাঞ্চ তৈরি হয় এবং সেটিতে সুইচ করে।

রিপোজিটরিতে টার্মিনাল খুলুন

টার্মিনাল খুলুন এবং আপনার গিট রিপোজিটরি রয়েছে এমন ফোল্ডারে যান। macOS টার্মিনালে ডিফল্ট শেল হলো zsh, যদিও আপনার সেটআপে অন্য শেল ব্যবহার করা হতে পারে। নিচের গিট কমান্ডগুলো যেকোনোটিতেই কাজ করে; যেসব ব্রাঞ্চের নামে শেলের মেটাক্যারেক্টার থাকে সেগুলোকে উদ্ধৃতি চিহ্নের (quote) মধ্যে রাখা উচিত যাতে শেল সেগুলোর ভুল ব্যাখ্যা না করে। Apple-এর টার্মিনাল গাইড

আপনার রিপোজিটরিটি যদি কোনো কোড এডিটরে ইতিমধ্যে খোলা থাকে, তবে সেখানে ইন্টিগ্রেটেড টার্মিনাল থাকলে সেটি ব্যবহার করুন। অন্যথায়, টার্মিনালে cd টাইপ করুন, ফাইন্ডার থেকে রিপোজিটরি ফোল্ডারটি টেনে টার্মিনাল উইন্ডোতে ছেড়ে দিন যাতে পাথটি ইনসার্ট হয়, তারপর Return চাপুন। ব্রাঞ্চ পরিবর্তন করার আগে সঠিক রিপোজিটরিতে আছেন কি না তা যাচাই করুন এবং যেকোনো লোকাল পরিবর্তন পর্যালোচনা করুন:

git status --short
git remote -v

git remote -v কনফিগার করা রিমোটের নাম এবং URL-এর তালিকা দেখায়। নিচের কমান্ডগুলোতে origin ব্যবহার করা হয়েছে, যা একটি বহুল ব্যবহৃত রিমোটের নাম; আপনার ম্যাক-এ প্রদর্শিত আসল নামটি দিয়ে এটি প্রতিস্থাপন করুন। কোনো রিমোট তালিকাভুক্ত না থাকলে, ফেচ করার মতো কোনো কনফিগার করা রিমোট এই রিপোজিটরিতে বর্তমানে নেই।

রিমোট ব্রাঞ্চ ফেচ করুন

চালান:

git fetch origin

ফেচিং রিমোট থেকে কমিট ও রেফারেন্স ডাউনলোড করে এবং রিপোজিটরির ফেচ কনফিগারেশন অনুযায়ী লোকাল রিমোট-ট্র্যাকিং রেফারেন্স আপডেট করে। এটি নিজে থেকে আপনার ওয়ার্কিং ডিরেক্টরিকে সেই ব্রাঞ্চে সুইচ করে না। সাধারণ কনফিগারেশনে, origin থেকে ফেচ করা ব্রাঞ্চগুলো origin/feature/login-এর মতো নাম হিসেবে প্রদর্শিত হয়। গিটের ডকুমেন্টেশন অনুযায়ী fetch রিমোট-ট্র্যাকিং ব্রাঞ্চ আপডেট করে, যার নিখুঁত ম্যাপিং রিমোটের ফেচ refspec দ্বারা নিয়ন্ত্রিত হয়। Git fetch ডকুমেন্টেশন

ব্রাঞ্চটি লোকালভাবে দৃশ্যমান কি না তা নিশ্চিত করতে পারেন:

git branch --remotes

আউটপুটে origin/feature/login খুঁজুন। যদি এটি না থাকে, তবে ব্রাঞ্চের নাম ও রিমোট সঠিক কি না, রিমোটে আপনার অ্যাক্সেস আছে কি না এবং রিমোটের ফেচ কনফিগারেশনে সেই ব্রাঞ্চ অন্তর্ভুক্ত আছে কি না তা পরীক্ষা করুন। সফল ফেচের পরেও সার্ভারের প্রতিটি ব্রাঞ্চ দৃশ্যমান নাও হতে পারে যদি রিপোজিটরিতে সীমাবদ্ধ refspec ব্যবহার করা হয়।

লোকাল ট্র্যাকিং ব্রাঞ্চ তৈরি এবং সুইচ করুন

যখন রিমোট-ট্র্যাকিং ব্রাঞ্চ উপস্থিত থাকে এবং আপনি চান যে লোকাল ব্রাঞ্চটিও একই নাম ব্যবহার করুক, তখন চালান:

git switch --track origin/feature/login

গিট একটি লোকাল feature/login ব্রাঞ্চ তৈরি করে, এর আপস্ট্রিম origin/feature/login-এ সেট করে এবং আপনার ওয়ার্কিং ট্রি সেটিতে সুইচ করে। ট্র্যাকিং সম্পর্কের কারণে git status-এর মতো কমান্ডগুলো রিপোর্ট করতে পারে যে লোকাল ব্রাঞ্চটি তার আপস্ট্রিমের সাথে কীভাবে তুলনাযোগ্য, এবং git pull-এর মতো অপারেশনগুলোর জন্য গিট-কে একটি ডিফল্ট আপস্ট্রিম সরবরাহ করে। --track অপশনটি সেই আপস্ট্রিম সেট করে; গিট এই বিন্যাসে রিমোট-ট্র্যাকিং ব্রাঞ্চ থেকে লোকাল নামটি গ্রহণ করে। Git switch ডকুমেন্টেশন

আপনি যদি একটি ভিন্ন লোকাল ব্রাঞ্চের নাম চান, তবে এটি স্পষ্টভাবে উল্লেখ করুন:

git switch --track --create login-work origin/feature/login

এটি origin/feature/login ট্র্যাক করে এমন একটি লোকাল login-work তৈরি করে। গিটের যেসব সংস্করণে নতুন switch কমান্ড সমর্থিত, সেগুলোতে --create হলো -c-এর পূর্ণ রূপ। গিট যদি জানায় যে switch অজানা, তবে git --version দিয়ে আপনার ইনস্টল করা সংস্করণটি পরীক্ষা করুন; git switch গিট ২.২৩ সংস্করণে চালু হয়েছিল। সে ক্ষেত্রে, এর সমতুল্য পুরোনো কমান্ডটি ব্যবহার করুন:

git checkout --track -b login-work origin/feature/login

ব্রাঞ্চ যাচাই করুন এবং সাধারণ ত্রুটিগুলো সমাধান করুন

সুইচ করার পর, সক্রিয় ব্রাঞ্চ এবং ট্র্যাকিং স্ট্যাটাস নিশ্চিত করুন:

git status -sb
git branch -vv

স্ট্যাটাস আউটপুটে লোকাল ব্রাঞ্চ এবং এর আপস্ট্রিম শনাক্ত হওয়া উচিত। ব্রাঞ্চের তালিকায় login-work-এর ট্র্যাকিং ব্রাঞ্চ হিসেবে origin/feature/login দেখানো উচিত।

গিট যদি বলে যে ব্রাঞ্চটি দ্ব্যর্থক (ambiguous), তবে স্বয়ংক্রিয় অনুমানের ওপর নির্ভর না করে ওপরে দেখানো সম্পূর্ণ নির্দিষ্ট remote/branch রূপটি ব্যবহার করুন। গিটের শর্টহ্যান্ড git switch feature/login স্বয়ংক্রিয়ভাবে একটি ট্র্যাকিং ব্রাঞ্চ তৈরি করতে পারে যখন ঠিক একটি রিমোটে একটি ম্যাচিং ব্রাঞ্চ থাকে, কিন্তু একাধিক রিমোটে সেই নামটি থাকলে বিভ্রান্তি বা দ্ব্যর্থতা দেখা দিতে পারে। Git switch ডকুমেন্টেশন

লোকাল পরিবর্তনগুলো ওভাররাইট হয়ে যাবে বলে যদি সুইচ করতে অস্বীকৃতি জানানো হয়, তবে এগিয়ে যাওয়ার আগে থামুন এবং git status পর্যালোচনা করুন। আপনি যেসব কাজ রাখতে চান তা কমিট করুন অথবা নিরাপদে স্ট্যাশ করুন; কী মুছে যাবে তা না বুঝে সুইচ জোরপূর্বক করবেন না বা পরিবর্তনগুলো বাতিল করবেন না। লোকাল ব্রাঞ্চের নামটি যদি ইতিমধ্যে বিদ্যমান থাকে, তবে ইচ্ছাকৃতভাবে সেই ব্রাঞ্চটি বেছে নিন অথবা --create দিয়ে একটি ভিন্ন লোকাল নাম নির্বাচন করুন; আগে থেকে বিদ্যমান কোনো ব্রাঞ্চ আপনার কাঙ্ক্ষিত রিমোটকে ট্র্যাক করছে বলে ধরে নেবেন না।

উদ্দিষ্ট লোকাল ব্রাঞ্চ চেক আউট হলে এবং এর আপস্ট্রিম উদ্দিষ্ট রিমোট ব্রাঞ্চকে পয়েন্ট করলে এই প্রক্রিয়াটি সম্পন্ন হয়। ফেচ করার মাধ্যমে রিমোট সম্পর্কে আপনার লোকাল রিপোজিটরির তথ্য রিফ্রেশ হয়; ট্র্যাকিং ব্রাঞ্চ তৈরি করা আপনাকে সেই সংযোগ বজায় রেখে কাজ করার জন্য একটি লোকাল পরিবেশ প্রদান করে।

তথ্যসূত্র