এই সঙ্গে বাঁধা হয় Git আমি আশা করি যে SVN জ্ঞানের আমার অভাব neglectable হয়।
বর্তমানে আমি একটি রেপো ক্লোন করছি এবং গিটক ব্যবহার করে একটি নির্দিষ্ট শাখা ক্লোন করছি।
আপনি কেবল একটি নির্দিষ্ট শাখা নয় পুরো রিমোট রিপোজিটরির ক্লোনিং করছেন।
সংগ্রহস্থলটি একটি ডাটাবেস হিসাবে সর্বোত্তমভাবে কল্পনা করা হয়, সুতরাং আপনি দূরবর্তী ডাটাবেসের বর্তমান অবস্থার একটি ক্লোন তৈরি করছেন। তবে এর পরে, আপনি সেই ডাটাবেসের নিজস্ব অনুলিপিটিতে কাজ করছেন; যদি আপনি প্রতিশ্রুতিবদ্ধ হন, আপনি আপনার স্থানীয় ডাটাবেস পরিবর্তন করে।
fetch
কমান্ডের সাহায্যে দূরবর্তী এক সঙ্গে সুসংগত স্থানীয় ডাটাবেসের রাখা ব্যবহার করা হয়।
সাধারণত সেই স্থানীয় ডাটাবেস থেকে, আপনি কাজ করতে একটি শাখা চেকআউট করেন। এটি গিটের অভ্যন্তরীণ চিহ্নিতকারীর মতো আর কিছুই নয়, যেখানে আপনার বর্তমান কাজ শুরু হয়েছিল।
বলুন, আপনি একটি সাধারণ সংগ্রহস্থল নিয়ে কাজ করছেন, যেখানে কোনও শাখা নেই master
, আপনি .git
"যাদু" উন্মোচন করতে ফোল্ডারটি একবার দেখে নিতে পারেন :
ধরুন আপনার শেষ প্রতিশ্রুতি ছিল (চালু master
) 182e8220b404437b9e43eb78149d31af79040c66
, আপনি ঠিক এর অধীনে পাবেন cat .git/refs/heads/master
।
এটি থেকে আপনি একটি নতুন শাখাটি শাখা করেন git checkout -b mybranch
, আপনি ফাইলে ঠিক একই পয়েন্টারটি খুঁজে পাবেন cat .git/refs/heads/mybranch
।
শাখা "পয়েন্টার" ছাড়া আর কিছুই নয় nothing "कार्यरत" চিহ্নিতকারীকে বলা হয় a HEAD
।
আপনি কোথায় আছেন তা জানতে চাইলে HEAD
:
cat .git/HEAD
যা উদাহরণস্বরূপ বলে ref: refs/heads/mybranch
, যা cat .git/refs/heads/mybranch
প্রতিশ্রুতিবদ্ধ হ্যাশের দিকে ( ) পরিবর্তিত হয়78a8a6eb6f82eae21b156b68d553dd143c6d3e6f
আসল কমিটগুলি objects
ফোল্ডারের অধীনে সঞ্চিত থাকে (এটির নিজস্ব একটি বিষয় কীভাবে হয়)।
প্রকল্পের ফোল্ডারে কেবলমাত্র সেই শাখার জন্য সামগ্রী রয়েছে এবং আমি এসভিএন হিসাবে সমস্ত শাখা দেখতে পাচ্ছি না, এটি আমার জন্য কিছুটা বিভ্রান্তিকর।
working directory
সামগ্রিকভাবে "গিট-ডাটাবেস" দিয়ে বিভ্রান্ত করবেন না । আমি উপরে বলেছি যে, আপনার কার্যকরী ডিরেক্টরিটি কেবল একটি উপসেটের স্ন্যাপশট।
বলুন যে আপনার বিভিন্ন শাখা রয়েছে, আপনার কার্যকরী ডিরেক্টরি কেবলমাত্র সেই শাখায় কাজ করার জন্য উত্সর্গীকৃত (যদিও আপনি অন্য কোথাও থেকে কাজটি রাখতে পারেন)।
সাধারণত, আপনি যদি দেখতে চান, প্রকল্পের জন্য কোন শাখাগুলি সংজ্ঞায়িত করা হয়েছে, আপনার সম্ভাবনা রয়েছে
git branch
স্থানীয় শাখার জন্য
git branch --remote
প্রত্যন্ত শাখার জন্য
git branch -a
উভয় জন্য
(বা git branch -v
)
যেহেতু গিটটি একটি বিতরণযোগ্য সংস্করণ নিয়ন্ত্রণ ব্যবস্থা, এটি কেবল স্থানীয়ভাবে / দূরবর্তী অঞ্চলে বিভিন্ন শাখা তৈরি করা সম্ভব নয়, তবে উত্সাহিত।
আমার আদর্শ ওয়ার্কফ্লো হল:
- একটি বৈশিষ্ট্য শাখা বন্ধ শাখা
- সেই থেকে একটি ডাব্লুআইপি (কাজ চলছে) শাখা করুন
- আপনি যেমন চান তেমন কাজ করুন - এমনকি যদি আপনি একটি লাইনের পরে প্রতিশ্রুতিবদ্ধ থাকেন; এটা কোন ব্যাপার না
বৈশিষ্ট্যটি সম্পূর্ণ হলে:
- স্কোয়াশ / পুনর্নির্মাণ
WIP
শাখা (ইন্টারেক্টিভ রিবেসিং সহ) = এটি থেকে একক প্রতিশ্রুতিবদ্ধ
WIP
বৈশিষ্ট্য শাখায় শাখাটি মার্জ করুন এবং স্থিতিশীল (মাস্টার) শাখায় সংহত করার জন্য (যদি আপনি গিথুব দিয়ে কাজ করেন তবে সেই অফারটিকে "পুল অনুরোধ" বলা হবে) অফার করুন।
এছাড়াও আমি জানতে চাই যে কীভাবে একটি প্রক্রিয়া পরিচালনা করতে হবে যেখানে ক্ষেত্রে একই সময়ে দুটি শাখায় আমার ডব্লুপিআরএল করা দরকার, উদাহরণস্বরূপ, আমাকে মাস্টারে একটি হটফিক্স তৈরি করতে হবে তবে অন্য শাখার সামগ্রীও রাখা উচিত।
আপনার প্রকল্পটি কীভাবে কাঠামোবদ্ধ করা হয়েছে তার উপর এটি নির্ভর করে:
বলুন আপনার একটি স্থিতিশীল মাস্টার আছে। এবং বৈশিষ্ট্যগুলি কেবল সেই স্থিতিশীল শাখা থেকে বিকাশ করা হয় - তাই এটি সাধারণত কোনও বৈশিষ্ট্য শাখার পিছনে থাকে। তারপরে আপনার মাস্টার সম্পর্কে একটি শেষ প্রতিশ্রুতি থাকবে যা বৈশিষ্ট্য শাখার মূল হবে।
তারপরে আপনি মাস্টার শাখায় অঙ্গীকারবদ্ধ হবেন এবং সিদ্ধান্ত নিতে পারতেন, উভয় শাখাকে একত্রে মার্জ করা হবে বা পুনর্বাসিত করা হবে (যা বলতে গেলে উন্নত প্রয়োজনের ব্যবহারকারীদের জন্য এক ধরণের মার্জ)।
অথবা আপনি সর্বদা শাখায় (যেমন master
) পরিবর্তন করতে এবং এগুলি অন্যান্য শাখায় চেরিপিক করতে সক্ষম ।
জিআইটি-র রেপো থেকে ক্লোন করা শাখার অন্তর্ভুক্ত ফোল্ডারগুলি তৈরি করার জন্য প্রস্তাবিত নাম কনভেনশনগুলি কী, উদাহরণস্বরূপ মাইপ্রজেক্ট-শাখার নাম
এটা আপনার উপরে।
সাধারণত, আপনি সংগ্রহস্থলের নাম দিয়ে শেষ করেন।
তবে এমন কিছু অনুষ্ঠান রয়েছে, যখন এটি চাওয়া হয় না:
উদাহরণস্বরূপ, আপনি git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
এখানে ও-মাই-জেডএস ক্লোন করেছেন .oh-my-zsh
স্পষ্টভাবে লক্ষ্য হিসাবে নামকরণ করা হয়েছে।