# GitHub পরিচিতি এই পাঠে GitHub-এর মৌলিক বিষয়গুলি আলোচনা করা হয়েছে, যা কোড হোস্ট এবং পরিবর্তন পরিচালনার একটি প্ল্যাটফর্ম। ![GitHub পরিচিতি](../../../../translated_images/webdev101-github.8846d7971abef6f947909b4f9d343e2a23778aa716ca6b9d71df7174ee5009ac.bn.png) > স্কেচনোট: [Tomomi Imura](https://twitter.com/girlie_mac) ## প্রাক-পাঠ কুইজ [প্রাক-পাঠ কুইজ](https://ff-quizzes.netlify.app) ## পরিচিতি এই পাঠে আমরা আলোচনা করব: - আপনার মেশিনে করা কাজ ট্র্যাক করা - অন্যদের সাথে প্রকল্পে কাজ করা - ওপেন সোর্স সফটওয়্যারে কীভাবে অবদান রাখা যায় ### পূর্বশর্ত শুরু করার আগে, আপনাকে দেখতে হবে Git ইনস্টল করা আছে কিনা। টার্মিনালে টাইপ করুন: `git --version` যদি Git ইনস্টল না থাকে, [Git ডাউনলোড করুন](https://git-scm.com/downloads)। তারপর, আপনার লোকাল Git প্রোফাইল সেটআপ করুন টার্মিনালে: * `git config --global user.name "your-name"` * `git config --global user.email "your-email"` Git ইতিমধ্যে কনফিগার করা আছে কিনা তা পরীক্ষা করতে টাইপ করুন: `git config --list` আপনার একটি GitHub অ্যাকাউন্ট, একটি কোড এডিটর (যেমন Visual Studio Code), এবং টার্মিনাল (বা: কমান্ড প্রম্পট) খুলতে হবে। [github.com](https://github.com/) এ যান এবং যদি এখনও অ্যাকাউন্ট না থাকে তবে একটি অ্যাকাউন্ট তৈরি করুন, অথবা লগ ইন করুন এবং আপনার প্রোফাইল পূরণ করুন। ✅ GitHub বিশ্বের একমাত্র কোড রিপোজিটরি নয়; আরও অনেক আছে, তবে GitHub সবচেয়ে পরিচিত। ### প্রস্তুতি আপনার লোকাল মেশিনে (ল্যাপটপ বা পিসি) একটি কোড প্রকল্পের ফোল্ডার এবং GitHub-এ একটি পাবলিক রিপোজিটরি প্রয়োজন হবে, যা অন্যদের প্রকল্পে অবদান রাখার উদাহরণ হিসেবে কাজ করবে। --- ## কোড ব্যবস্থাপনা ধরুন আপনার লোকাল মেশিনে একটি কোড প্রকল্পের ফোল্ডার আছে এবং আপনি Git ব্যবহার করে আপনার অগ্রগতি ট্র্যাক করতে চান - এটি একটি ভার্সন কন্ট্রোল সিস্টেম। কিছু লোক Git ব্যবহারকে ভবিষ্যতের নিজের জন্য একটি প্রেমপত্র লেখার সাথে তুলনা করে। আপনার কমিট মেসেজগুলি পড়লে আপনি কেন একটি সিদ্ধান্ত নিয়েছিলেন তা মনে করতে পারবেন, অথবা একটি পরিবর্তন "রোলব্যাক" করতে পারবেন - যদি আপনি ভালো "কমিট মেসেজ" লিখেন। ### কাজ: একটি রিপোজিটরি তৈরি করুন এবং কোড কমিট করুন > ভিডিও দেখুন > > [![Git এবং GitHub-এর মৌলিক বিষয় ভিডিও](https://img.youtube.com/vi/9R31OUPpxU4/0.jpg)](https://www.youtube.com/watch?v=9R31OUPpxU4) 1. **GitHub-এ রিপোজিটরি তৈরি করুন**। GitHub.com-এ, রিপোজিটরি ট্যাবে, অথবা নেভিগেশন বার টপ-রাইট থেকে, **নতুন রিপো** বোতামটি খুঁজুন। 1. আপনার রিপোজিটরিকে একটি নাম দিন 1. **রিপোজিটরি তৈরি করুন** নির্বাচন করুন। 1. **আপনার কাজের ফোল্ডারে যান**। আপনার টার্মিনালে, সেই ফোল্ডারে (ডিরেক্টরি) যান যা আপনি ট্র্যাক করতে চান। টাইপ করুন: ```bash cd [name of your folder] ``` 1. **Git রিপোজিটরি ইনিশিয়ালাইজ করুন**। আপনার প্রকল্পে টাইপ করুন: ```bash git init ``` 1. **স্ট্যাটাস পরীক্ষা করুন**। আপনার রিপোজিটরির স্ট্যাটাস পরীক্ষা করতে টাইপ করুন: ```bash git status ``` আউটপুট দেখতে এমন কিছু হতে পারে: ```output Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git checkout -- ..." to discard changes in working directory) modified: file.txt modified: file2.txt ``` সাধারণত `git status` কমান্ড আপনাকে জানায় কোন ফাইলগুলি _সেভ_ করার জন্য প্রস্তুত বা কোন ফাইলগুলিতে পরিবর্তন আছে যা আপনি সংরক্ষণ করতে চান। 1. **সব ফাইল ট্র্যাকিংয়ে যোগ করুন** এটিকে স্টেজিং ফাইল/স্টেজিং এরিয়াতে ফাইল যোগ করাও বলা হয়। ```bash git add . ``` `git add` এবং `.` আর্গুমেন্ট নির্দেশ করে যে আপনার সব ফাইল এবং পরিবর্তন ট্র্যাকিংয়ের জন্য যোগ করা হয়েছে। 1. **নির্বাচিত ফাইল ট্র্যাকিংয়ে যোগ করুন** ```bash git add [file or folder name] ``` এটি আমাদের নির্দিষ্ট ফাইলগুলি স্টেজিং এরিয়াতে যোগ করতে সাহায্য করে যখন আমরা সব ফাইল একবারে কমিট করতে চাই না। 1. **সব ফাইল আনস্টেজ করুন** ```bash git reset ``` এই কমান্ড আমাদের একবারে সব ফাইল আনস্টেজ করতে সাহায্য করে। 1. **নির্দিষ্ট ফাইল আনস্টেজ করুন** ```bash git reset [file or folder name] ``` এই কমান্ড আমাদের একবারে নির্দিষ্ট একটি ফাইল আনস্টেজ করতে সাহায্য করে যা আমরা পরবর্তী কমিটে অন্তর্ভুক্ত করতে চাই না। 1. **আপনার কাজ সংরক্ষণ করুন**। এই পর্যায়ে আপনি ফাইলগুলি একটি তথাকথিত _স্টেজিং এরিয়াতে_ যোগ করেছেন। এটি এমন একটি জায়গা যেখানে Git আপনার ফাইলগুলি ট্র্যাক করছে। পরিবর্তন স্থায়ী করতে আপনাকে ফাইলগুলি _কমিট_ করতে হবে। এটি করতে `git commit` কমান্ড ব্যবহার করে একটি _কমিট_ তৈরি করুন। একটি _কমিট_ আপনার রিপোজিটরির ইতিহাসে একটি সেভিং পয়েন্টকে প্রতিনিধিত্ব করে। টাইপ করুন: ```bash git commit -m "first commit" ``` এটি আপনার সব ফাইল কমিট করে, "প্রথম কমিট" বার্তা যোগ করে। ভবিষ্যতের কমিট বার্তাগুলির জন্য আপনি আরও বর্ণনামূলক বার্তা ব্যবহার করতে চাইবেন যাতে আপনি কী ধরনের পরিবর্তন করেছেন তা বোঝানো যায়। 1. **আপনার লোকাল Git রিপোকে GitHub-এর সাথে সংযুক্ত করুন**। একটি Git রিপো আপনার মেশিনে ভালো, তবে এক পর্যায়ে আপনি আপনার ফাইলগুলির ব্যাকআপ কোথাও রাখতে চাইবেন এবং অন্যদের আপনার রিপোতে কাজ করার জন্য আমন্ত্রণ জানাতে চাইবেন। GitHub এমন একটি চমৎকার জায়গা। মনে রাখুন আমরা ইতিমধ্যে GitHub-এ একটি রিপো তৈরি করেছি, তাই আমাদের যা করতে হবে তা হল আমাদের লোকাল Git রিপোকে GitHub-এর সাথে সংযুক্ত করা। `git remote add` কমান্ড এটি করবে। টাইপ করুন: > নোট, কমান্ড টাইপ করার আগে আপনার GitHub রিপো পেজে যান এবং রিপোজিটরি URL খুঁজুন। আপনি এটি নিচের কমান্ডে ব্যবহার করবেন। ```https://github.com/username/repository_name.git``` আপনার GitHub URL দিয়ে প্রতিস্থাপন করুন। ```bash git remote add origin https://github.com/username/repository_name.git ``` এটি একটি _রিমোট_, বা সংযোগ তৈরি করে, যার নাম "origin" যা আপনি আগে তৈরি করা GitHub রিপোজিটরির দিকে নির্দেশ করে। 1. **লোকাল ফাইলগুলি GitHub-এ পাঠান**। এখন পর্যন্ত আপনি লোকাল রিপো এবং GitHub রিপোর মধ্যে একটি _সংযোগ_ তৈরি করেছেন। এই ফাইলগুলি GitHub-এ পাঠাতে `git push` কমান্ড ব্যবহার করুন, যেমন: > নোট, আপনার ব্রাঞ্চের নাম ```main``` থেকে আলাদা হতে পারে। ```bash git push -u origin main ``` এটি আপনার "main" ব্রাঞ্চের কমিটগুলি GitHub-এ পাঠায়। `upstream` ব্রাঞ্চ সেট করা এবং কমান্ডে `-u` অন্তর্ভুক্ত করা আপনার লোকাল ব্রাঞ্চ এবং রিমোট ব্রাঞ্চের মধ্যে একটি লিঙ্ক স্থাপন করে, যাতে আপনি ভবিষ্যতে ব্রাঞ্চের নাম উল্লেখ না করেই সহজে git push বা git pull ব্যবহার করতে পারেন। Git স্বয়ংক্রিয়ভাবে upstream ব্রাঞ্চ ব্যবহার করবে এবং ভবিষ্যতের কমান্ডে আপনাকে ব্রাঞ্চের নাম স্পষ্টভাবে উল্লেখ করতে হবে না। 2. **আরও পরিবর্তন যোগ করতে**। যদি আপনি পরিবর্তন করতে এবং সেগুলি GitHub-এ পাঠাতে চান, তাহলে আপনাকে শুধুমাত্র তিনটি কমান্ড ব্যবহার করতে হবে: ```bash git add . git commit -m "type your commit message here" git push ``` > টিপ, আপনি `.gitignore` ফাইল গ্রহণ করতে চাইতে পারেন যাতে আপনি GitHub-এ ট্র্যাক করতে না চাওয়া ফাইলগুলি দেখানো থেকে আটকাতে পারেন - যেমন সেই নোটস ফাইল যা আপনি একই ফোল্ডারে সংরক্ষণ করেন কিন্তু পাবলিক রিপোজিটরিতে এর কোনো স্থান নেই। `.gitignore` ফাইলের টেমপ্লেটগুলি [.gitignore templates](https://github.com/github/gitignore) এ পাওয়া যাবে। #### কমিট বার্তা একটি চমৎকার Git কমিট সাবজেক্ট লাইন নিম্নলিখিত বাক্যটি সম্পূর্ণ করে: যদি প্রয়োগ করা হয়, এই কমিটটি <আপনার সাবজেক্ট লাইন এখানে> সাবজেক্টের জন্য আদেশমূলক, বর্তমান কাল ব্যবহার করুন: "change" নয় "changed" বা "changes"। সাবজেক্টের মতো, বডিতেও (ঐচ্ছিক) আদেশমূলক, বর্তমান কাল ব্যবহার করুন। বডিতে পরিবর্তনের প্রেরণা এবং পূর্ববর্তী আচরণের সাথে এর পার্থক্য অন্তর্ভুক্ত করা উচিত। আপনি `কেন` ব্যাখ্যা করছেন, `কীভাবে` নয়। ✅ GitHub-এ কিছুক্ষণ ঘুরে দেখুন। আপনি কি একটি সত্যিই চমৎকার কমিট বার্তা খুঁজে পেতে পারেন? আপনি কি একটি খুব সংক্ষিপ্ত বার্তা খুঁজে পেতে পারেন? আপনার মতে কমিট বার্তায় কোন তথ্য সবচেয়ে গুরুত্বপূর্ণ এবং উপযোগী? ### কাজ: সহযোগিতা করুন GitHub-এ জিনিসগুলি রাখার প্রধান কারণ হল অন্য ডেভেলপারদের সাথে সহযোগিতা করা সম্ভব করা। ## অন্যদের সাথে প্রকল্পে কাজ করা > ভিডিও দেখুন > > [![Git এবং GitHub-এর মৌলিক বিষয় ভিডিও](https://img.youtube.com/vi/bFCM-PC3cu8/0.jpg)](https://www.youtube.com/watch?v=bFCM-PC3cu8) আপনার রিপোজিটরিতে, `Insights > Community`-এ যান এবং দেখুন আপনার প্রকল্পটি প্রস্তাবিত কমিউনিটি স্ট্যান্ডার্ডগুলির সাথে কেমন তুলনা করে। আপনার GitHub রিপো উন্নত করতে পারে এমন কিছু বিষয় এখানে দেওয়া হলো: - **বর্ণনা**। আপনি কি আপনার প্রকল্পের জন্য একটি বর্ণনা যোগ করেছেন? - **README**। আপনি কি একটি README যোগ করেছেন? GitHub একটি [README](https://docs.github.com/articles/about-readmes/?WT.mc_id=academic-77807-sagibbon) লেখার জন্য নির্দেশনা প্রদান করে। - **অবদান রাখার নির্দেশিকা**। আপনার প্রকল্পে কি [অবদান রাখার নির্দেশিকা](https://docs.github.com/articles/setting-guidelines-for-repository-contributors/?WT.mc_id=academic-77807-sagibbon) আছে? - **আচরণবিধি**। একটি [আচরণবিধি](https://docs.github.com/articles/adding-a-code-of-conduct-to-your-project/) আছে? - **লাইসেন্স**। সম্ভবত সবচেয়ে গুরুত্বপূর্ণ, একটি [লাইসেন্স](https://docs.github.com/articles/adding-a-license-to-a-repository/) আছে? এই সমস্ত রিসোর্স নতুন টিম সদস্যদের অনবোর্ডিংয়ে উপকার করবে। এবং এগুলি সাধারণত নতুন অবদানকারীরা আপনার কোড দেখার আগে দেখে, এটি খুঁজে বের করতে যে আপনার প্রকল্পটি তাদের সময় ব্যয় করার জন্য সঠিক জায়গা কিনা। ✅ README ফাইলগুলি, যদিও প্রস্তুত করতে সময় লাগে, ব্যস্ত মেইনটেইনাররা প্রায়ই অবহেলা করেন। আপনি কি একটি বিশেষভাবে বর্ণনামূলক উদাহরণ খুঁজে পেতে পারেন? নোট: কিছু [ভালো README তৈরি করার টুল](https://www.makeareadme.com/) আছে যা আপনি চেষ্টা করতে পারেন। ### কাজ: কিছু কোড মার্জ করুন অবদান রাখার ডকুমেন্টগুলি মানুষকে প্রকল্পে অবদান রাখতে সাহায্য করে। এটি ব্যাখ্যা করে আপনি কী ধরনের অবদান খুঁজছেন এবং প্রক্রিয়াটি কীভাবে কাজ করে। অবদানকারীদের GitHub-এ আপনার রিপোতে অবদান রাখতে একটি সিরিজ ধাপ অনুসরণ করতে হবে: 1. **আপনার রিপো ফর্ক করা**। আপনি সম্ভবত মানুষকে আপনার প্রকল্প _ফর্ক_ করতে চাইবেন। ফর্ক করা মানে তাদের GitHub প্রোফাইলে আপনার রিপোজিটরির একটি প্রতিলিপি তৈরি করা। 1. **ক্লোন**। সেখান থেকে তারা প্রকল্পটি তাদের লোকাল মেশিনে ক্লোন করবে। 1. **একটি ব্রাঞ্চ তৈরি করুন**। আপনি তাদের কাজের জন্য একটি _ব্রাঞ্চ_ তৈরি করতে বলতে চাইবেন। 1. **পরিবর্তন একটি এলাকায় কেন্দ্রীভূত করুন**। অবদানকারীদের একবারে একটি জিনিসে তাদের অবদান কেন্দ্রীভূত করতে বলুন - এভাবে তাদের কাজ _মার্জ_ করার সম্ভাবনা বেশি। কল্পনা করুন তারা একটি বাগ ফিক্স লিখেছে, একটি নতুন ফিচার যোগ করেছে, এবং কয়েকটি টেস্ট আপডেট করেছে - যদি আপনি ৩টির মধ্যে ২টি বা ১টি পরিবর্তন বাস্তবায়ন করতে চান বা পারেন? ✅ এমন একটি পরিস্থিতি কল্পনা করুন যেখানে ব্রাঞ্চগুলি ভালো কোড লেখার এবং শিপ করার জন্য বিশেষভাবে গুরুত্বপূর্ণ। আপনি কী ব্যবহারিক ক্ষেত্রগুলি ভাবতে পারেন? > নোট, আপনি যা পরিবর্তন দেখতে চান তা নিজেও করুন এবং আপনার নিজের কাজের জন্য ব্রাঞ্চ তৈরি করুন। আপনি যে কোনো কমিট করবেন তা আপনি বর্তমানে "চেক আউট" করা ব্রাঞ্চে করা হবে। `git status` ব্যবহার করে দেখুন কোন ব্রাঞ্চে আছেন। চলুন একটি অবদানকারীর ওয়ার্কফ্লো দেখে নিই। ধরে নিন অবদানকারী ইতিমধ্যে রিপো _ফর্ক_ এবং _ক্লোন_ করেছেন, তাই তাদের লোকাল মেশিনে কাজ করার জন্য একটি Git রিপো প্রস্তুত আছে: 1. **একটি ব্রাঞ্চ তৈরি করুন**। `git branch` কমান্ড ব্যবহার করে একটি ব্রাঞ্চ তৈরি করুন যা তারা অবদান রাখতে চায় এমন পরিবর্তনগুলি ধারণ করবে: ```bash git branch [branch-name] ``` 1. **কাজের ব্রাঞ্চে যান**। নির্দিষ্ট ব্রাঞ্চে যান এবং `git switch` ব্যবহার করে কাজের ডিরেক্টরি আপডেট করুন: ```bash git switch [branch-name] ``` 1. **কাজ করুন**। এই পর্যায়ে আপনি আপনার পরিবর্তন যোগ করতে চান। নিচের কমান্ডগুলি ব্যবহার করে Git-কে এটি সম্পর্কে জানাতে ভুলবেন না: ```bash git add . git commit -m "my changes" ``` নিশ্চিত করুন যে আপনি আপনার কমিটকে একটি ভালো নাম দিয়েছেন, আপনার জন্য এবং আপনি যে রিপোতে সাহায্য করছেন তার মেইনটেইনারের জন্য। 1. **আপনার কাজকে `main` ব্রাঞ্চের সাথে একত্রিত করুন**। এক পর্যায়ে আপনি কাজ শেষ করেছেন এবং আপনি আপনার কাজকে `main` ব্রাঞ্চের সাথে একত্রিত করতে চান। এদিকে `main` ব্রাঞ্চ পরিবর্তিত হতে পারে, তাই নিশ্চিত করুন যে আপনি প্রথমে এটি সর্বশেষে আপডেট করেছেন নিম্নলিখিত কমান্ডগুলি ব্যবহার করে: ```bash git switch main git pull ``` এই পর্যায়ে আপনি নিশ্চিত করতে চান যে কোনো _কনফ্লিক্ট_, এমন পরিস্থিতি যেখানে Git সহজে পরিবর্তনগুলি _একত্রিত_ করতে পারে না, আপনার কাজের ব্রাঞ্চে ঘটে। তাই নিম্নলিখিত কমান্ডগুলি চালান: ```bash git switch [branch_name] git merge main ``` `git merge main` কমান্ডটি `main` থেকে আপনার ব্রাঞ্চে সব পরিবর্তন নিয়ে আসবে। আশা করি আপনি সহজেই চালিয়ে যেতে পারবেন। যদি না পারেন, VS Code আপনাকে জানাবে কোথায় Git _বিভ্রান্ত_ এবং আপনি প্রভাবিত ফাইলগুলি পরিবর্তন করবেন যাতে সঠিক বিষয়বস্তু থাকে। একটি ভিন্ন ব্রাঞ্চে যেতে, আধুনিক `git switch` কমান্ড ব্যবহার করুন: ```bash git switch [branch_name] 1. **আপনার কাজ GitHub-এ পাঠান**। আপনার কাজ GitHub-এ পাঠানো মানে দুটি জিনিস। আপনার ব্রাঞ্চকে আপনার রিপোতে পুশ করা এবং তারপর একটি PR, Pull Request খুলুন। ```bash git push --set-upstream origin [branch-name] ``` উপরের কমান্ডটি আপনার ফর্ক করা রিপোতে ব্রাঞ্চ তৈরি করে। 1. **PR খুলুন**। এরপর, আপনাকে একটি PR (Pull Request) খুলতে হবে। এটি করতে GitHub-এ আপনার fork করা রিপোজিটরিতে যান। GitHub-এ একটি নির্দেশনা থাকবে যেখানে জিজ্ঞাসা করা হবে আপনি নতুন PR তৈরি করতে চান কিনা। সেখানে ক্লিক করুন এবং আপনি এমন একটি ইন্টারফেসে পৌঁছাবেন যেখানে আপনি কমিট মেসেজের শিরোনাম পরিবর্তন করতে পারবেন এবং আরও উপযুক্ত বিবরণ যোগ করতে পারবেন। এখন আপনি যে রিপোজিটরি fork করেছেন তার maintainer এই PR দেখবেন এবং _আশা করি_ তারা এটি পছন্দ করবেন এবং _merge_ করবেন। আপনি এখন একজন contributor, বাহ! :) 1. **পরিষ্কার করুন**। একটি PR সফলভাবে merge করার পর আপনার কাজ পরিষ্কার করা ভালো অভ্যাস হিসেবে বিবেচিত হয়। আপনাকে আপনার লোকাল ব্রাঞ্চ এবং GitHub-এ যে ব্রাঞ্চটি push করেছেন সেটি পরিষ্কার করতে হবে। প্রথমে নিচের কমান্ডটি ব্যবহার করে লোকাল ব্রাঞ্চটি মুছে ফেলুন: ```bash git branch -d [branch-name] ``` এরপর GitHub-এ fork করা রিপোজিটরির পেজে যান এবং আপনি যে রিমোট ব্রাঞ্চটি push করেছেন সেটি সরিয়ে ফেলুন। `Pull request` শব্দটি একটু অদ্ভুত শোনাতে পারে কারণ আপনি প্রকল্পে আপনার পরিবর্তনগুলি push করতে চান। কিন্তু maintainer (প্রকল্পের মালিক) বা core টিমকে আপনার পরিবর্তনগুলি merge করার আগে বিবেচনা করতে হয়, তাই আপনি মূলত maintainer-এর কাছে একটি পরিবর্তনের সিদ্ধান্তের অনুরোধ করছেন। Pull request হলো এমন একটি জায়গা যেখানে একটি ব্রাঞ্চে আনা পরিবর্তনগুলি তুলনা এবং আলোচনা করা হয়, রিভিউ, মন্তব্য, ইন্টিগ্রেটেড টেস্ট এবং আরও অনেক কিছু সহ। একটি ভালো pull request সাধারণত কমিট মেসেজের মতো একই নিয়ম অনুসরণ করে। আপনি issue tracker-এ একটি issue-এর রেফারেন্স যোগ করতে পারেন, যেমন আপনার কাজ যদি কোনো issue সমাধান করে। এটি `#` এবং issue নম্বর ব্যবহার করে করা হয়। উদাহরণস্বরূপ, `#97`। 🤞আশা করি সব চেক পাস করবে এবং প্রকল্পের মালিক আপনার পরিবর্তনগুলি প্রকল্পে merge করবেন🤞 আপনার লোকাল কাজের ব্রাঞ্চটি GitHub-এর সংশ্লিষ্ট রিমোট ব্রাঞ্চ থেকে সমস্ত নতুন কমিট দিয়ে আপডেট করুন: `git pull` ## ওপেন সোর্সে কীভাবে অবদান রাখবেন প্রথমে, GitHub-এ একটি রিপোজিটরি (বা **repo**) খুঁজুন যা আপনার আগ্রহের এবং যেখানে আপনি একটি পরিবর্তন যোগ করতে চান। আপনি এর কন্টেন্ট আপনার মেশিনে কপি করতে চাইবেন। ✅ 'শুরুর জন্য সহজ' রিপোজিটরি খুঁজে পাওয়ার একটি ভালো উপায় হলো [‘good-first-issue’ ট্যাগ দিয়ে সার্চ করা](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/)। ![রিপোজিটরি লোকালি কপি করুন](../../../../translated_images/clone_repo.5085c48d666ead57664f050d806e325d7f883be6838c821e08bc823ab7c66665.bn.png) কোড কপি করার কয়েকটি উপায় রয়েছে। একটি উপায় হলো রিপোজিটরির কন্টেন্ট "ক্লোন" করা, HTTPS, SSH, বা GitHub CLI (Command Line Interface) ব্যবহার করে। আপনার টার্মিনাল খুলুন এবং রিপোজিটরি ক্লোন করুন এভাবে: `git clone https://github.com/ProjectURL` প্রকল্পে কাজ করতে সঠিক ফোল্ডারে যান: `cd ProjectURL` আপনি পুরো প্রকল্পটি [Codespaces](https://github.com/features/codespaces), GitHub-এর এম্বেডেড কোড এডিটর / ক্লাউড ডেভেলপমেন্ট এনভায়রনমেন্ট, বা [GitHub Desktop](https://desktop.github.com/) ব্যবহার করে খুলতে পারেন। অবশেষে, আপনি কোডটি একটি জিপ করা ফোল্ডারে ডাউনলোড করতে পারেন। ### GitHub সম্পর্কে আরও কিছু আকর্ষণীয় বিষয় আপনি GitHub-এ যেকোনো পাবলিক রিপোজিটরি "star", "watch" এবং/অথবা "fork" করতে পারেন। আপনার starred রিপোজিটরি আপনি উপরের ডানদিকে ড্রপ-ডাউন মেনুতে খুঁজে পাবেন। এটি কোডের জন্য বুকমার্ক করার মতো। প্রকল্পগুলির একটি issue tracker থাকে, সাধারণত GitHub-এর "Issues" ট্যাবে যদি অন্যথা উল্লেখ না করা হয়, যেখানে প্রকল্প সম্পর্কিত বিষয়গুলি নিয়ে আলোচনা করা হয়। এবং Pull Requests ট্যাবে মানুষ চলমান পরিবর্তনগুলি নিয়ে আলোচনা এবং রিভিউ করে। প্রকল্পগুলিতে ফোরাম, মেইলিং লিস্ট, বা Slack, Discord বা IRC-এর মতো চ্যাট চ্যানেলে আলোচনা থাকতে পারে। ✅ আপনার নতুন GitHub রিপোজিটরিটি ঘুরে দেখুন এবং কিছু জিনিস চেষ্টা করুন, যেমন সেটিংস সম্পাদনা করা, আপনার রিপোজিটরিতে তথ্য যোগ করা, এবং একটি প্রকল্প তৈরি করা (যেমন একটি Kanban বোর্ড)। এখানে অনেক কিছু করার আছে! --- ## 🚀 চ্যালেঞ্জ একজন বন্ধুর সাথে জুটি বাঁধুন এবং একে অপরের কোডে কাজ করুন। একটি প্রকল্প যৌথভাবে তৈরি করুন, কোড fork করুন, ব্রাঞ্চ তৈরি করুন এবং পরিবর্তন merge করুন। ## পোস্ট-লেকচার কুইজ [পোস্ট-লেকচার কুইজ](https://ff-quizzes.netlify.app/web/en/) ## রিভিউ এবং স্ব-অধ্যয়ন [ওপেন সোর্স সফটওয়্যারে অবদান রাখার](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution) বিষয়ে আরও পড়ুন। [Git চিটশিট](https://training.github.com/downloads/github-git-cheat-sheet/)। অনুশীলন, অনুশীলন, অনুশীলন। GitHub-এ [skills.github.com](https://skills.github.com) এর মাধ্যমে চমৎকার লার্নিং পাথ রয়েছে: - [GitHub-এ প্রথম সপ্তাহ](https://skills.github.com/#first-week-on-github) আপনি আরও উন্নত কোর্সও খুঁজে পাবেন। ## অ্যাসাইনমেন্ট [GitHub-এ প্রথম সপ্তাহ কোর্স](https://skills.github.com/#first-week-on-github) সম্পন্ন করুন। --- **অস্বীকৃতি**: এই নথিটি AI অনুবাদ পরিষেবা [Co-op Translator](https://github.com/Azure/co-op-translator) ব্যবহার করে অনুবাদ করা হয়েছে। আমরা যথাসাধ্য সঠিকতা নিশ্চিত করার চেষ্টা করি, তবে অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল ভাষায় থাকা নথিটিকে প্রামাণিক উৎস হিসেবে বিবেচনা করা উচিত। গুরুত্বপূর্ণ তথ্যের জন্য, পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদ ব্যবহারের ফলে কোনো ভুল বোঝাবুঝি বা ভুল ব্যাখ্যা হলে আমরা দায়বদ্ধ থাকব না।