- গিট ডেমন এবং হ্যামাচির মতো ভার্চুয়াল নেটওয়ার্ক ব্যবহার করে উইন্ডোজে ব্যক্তিগত গিট সার্ভার স্থাপন করা।
- প্রোডাকশন (মাস্টার) ব্রাঞ্চকে ডেভেলপমেন্ট ব্রাঞ্চগুলো থেকে পৃথক করে পেশাদার ওয়ার্কফ্লো বাস্তবায়ন।
- দূরবর্তী পরিবেশের জন্য SSH কী এবং পার্সোনাল অ্যাক্সেস টোকেন (PAT) ব্যবহার করে নিরাপদ প্রমাণীকরণ ব্যবস্থাপনা।
- উইন্ডোজ এবং ইউনিক্স অপারেটিং সিস্টেমের মধ্যে লাইন ব্রেক দ্বন্দ্ব এড়াতে গিট-এর গ্লোবাল প্যারামিটারগুলো সমন্বয় করা।
আমি নিশ্চিত, আপনার সাথেও এমনটা ঘটেছে: আপনার বাড়িতে বা অফিসে কয়েকটি কম্পিউটার আছে এবং আপনি চান যে কোনো বাহ্যিক ক্লাউড পরিষেবার উপর নির্ভর না করেই আপনার কোডগুলো সিঙ্ক্রোনাইজড থাকুক। যদিও আজকাল সবাই গিটহাব ব্যবহার করে, এমন পরিস্থিতিও আসে যখন আপনি আপনার ফাইলগুলোর উপর সম্পূর্ণ নিয়ন্ত্রণ রাখতে এবং তৃতীয় পক্ষকে আপনার মেধাস্বত্ব সংরক্ষণ করতে না দেওয়ার জন্য নিজের একটি ব্যক্তিগত গিট সার্ভার তৈরি করতে পছন্দ করেন।
উইন্ডোজে এটি সেট আপ করা বেশ ঝামেলার মনে হতে পারে, বিশেষ করে যখন আপনি নেটওয়ার্কের বাধা বা বোধগম্য নয় এমন সংযোগ ত্রুটির সম্মুখীন হন। কিন্তু চিন্তা করবেন না, আমরা ধাপে ধাপে দেখিয়ে দেবো কীভাবে আপনার মেশিনগুলোকে সংযুক্ত করতে হয়, তা হামাচির মতো ভার্চুয়াল নেটওয়ার্ক , ক্লাউড-ভিত্তিক লিনাক্স সার্ভার বা ক্লাসিক SSH সেটআপ—যা-ই ব্যবহার করুন না কেন, যাতে সবকিছু মসৃণভাবে চলে।
ভার্চুয়াল নেটওয়ার্কের সাহায্যে উইন্ডোজে আপনার নিজস্ব গিট সার্ভার সেট আপ করা

আপনার যদি দুটি উইন্ডোজ ১১ পিসি থাকে এবং আপনি প্রথমটিকে সার্ভার হিসেবে ব্যবহার করতে চান, তবে পিসি দুটি একই লোকাল নেটওয়ার্কে না থাকলে এর দ্রুততম উপায় হলো হ্যামাচি (Hamachi) ব্যবহার করা। এটি কার্যকর করার জন্য, আপনাকে প্রথমে দুটি মেশিনেই গিট (Git) এবং হ্যামাচি ইনস্টল করতে হবে। এক্ষেত্রে কৌশলটি হলো, কোনো সাধারণ ফোল্ডারে পুশ (push) করার চেষ্টা না করে, একটি নন-বেয়ার রিপোজিটরি (non-bare repository) কনফিগার করা অথবা গিট ডেমন (Git Daemon) টুলটি ব্যবহার করা।
শুরু করার জন্য, আপনার প্রোজেক্টের জন্য একটি ফোল্ডার তৈরি করুন (উদাহরণস্বরূপ, C:\Repos\Test.git) এবং রান করুন। git initকাজটি করার জন্য .gitignore-এর মতো অন্তত একটি ফাইল যোগ করা অপরিহার্য। git add . এবং প্রথম কমিটটি জারি করুন। অন্য কম্পিউটারকে সংযোগ করার অনুমতি দিতে, আপনাকে অবশ্যই কমান্ডের মাধ্যমে সার্ভারটি সক্রিয় করতে হবে। git daemon --export-all --base-path=. --reuseaddr --verboseক্লায়েন্ট সাইডে, অনুমতি সংক্রান্ত সমস্যা এড়াতে, এটি চালানোর পরামর্শ দেওয়া হয়। git config --global sendpack.sideband false চালু করার আগে আইপি ব্যবহার করে ক্লোন করা হয়েছে হামাচি দ্বারা।
শাখা ব্যবস্থাপনা এবং পেশাদার কর্মপ্রবাহ

শুরুতে একটি খুব সাধারণ ভুল হলো সমস্ত পরিবর্তন সরাসরি মাস্টার ব্রাঞ্চে পুশ করা। এটি সুপারিশ করা হয় না, কারণ মাস্টার ব্রাঞ্চটি আপনার প্রোডাকশন এনভায়রনমেন্ট হওয়া উচিত — অর্থাৎ, যেখানে শুধুমাত্র ডেপ্লয়মেন্টের জন্য প্রস্তুত কার্যকরী কোড থাকে। আদর্শগতভাবে, ভারী কাজগুলো সামলানোর জন্য আপনার default বা develop নামে একটি ব্রাঞ্চ তৈরি করা উচিত।
যৌক্তিক কর্মপ্রবাহটি হলো, প্রথমে সাবব্রাঞ্চে কমিটগুলো করা, পরিবর্তনগুলো পুশ করা এবং গিট-এ সমস্ত পরিবর্তন সেভ করা। এরপর সবকিছু সঠিকভাবে কাজ করছে কিনা তা যাচাই করে নিলে, মাস্টার-এ মার্জ করা । এইভাবে, আপনি একটি পরিষ্কার হিস্ট্রি বজায় রাখতে পারেন এবং একটি সামান্য ভুলের কারণে আপনার অ্যাপ্লিকেশনের স্থিতিশীল সংস্করণটি নষ্ট হওয়া থেকে রক্ষা করতে পারেন।
উন্নত বিকল্প: ক্লাউড সার্ভার এবং প্রোটোকল

আপনি যদি বাড়ির পিসির চেয়ে আরও শক্তিশালী কিছু খুঁজে থাকেন, তবে একটি লিনাক্স সার্ভার (উবুন্টু বা সেন্টওএস) স্থাপন করাই সেরা বিকল্প। এখানে আপনি ব্যবহার করে গিট ইনস্টল করতে পারেন। apt-get install git o yum install git-coreএই পরিবেশগুলিতে, মূল প্রোটোকলটি হল SSH (নিরাপদ শেল)কারণ এটি শক্তিশালী এনক্রিপশন প্রদান করে এবং পাসওয়ার্ডকে সাধারণ টেক্সটে প্রকাশ না করেই অ্যাক্সেস ব্যবস্থাপনার সুযোগ দেয়।
এই ধরনের একটি রিমোট সার্ভারে লোকাল প্রজেক্ট মাইগ্রেট করার জন্য, সবচেয়ে পরিচ্ছন্ন উপায় হলো একটি ‘বেয়ার’ কপি (ওয়ার্কিং ফাইল ছাড়া, শুধু গিট ডেটাবেস) তৈরি করা, যা ব্যবহার করে git clone --bare এবং তারপর কমান্ড ব্যবহার করে এটি সার্ভারে আপলোড করুন। scpএটি আপনার সার্ভারকে একটিতে পরিণত করে কেন্দ্রীয় সিঙ্ক্রোনাইজেশন নোড যেখানে টিমের সকল ডেভেলপার পুল এবং পুশ করতে পারে।
অপরিহার্য গিট পরিবেশ কনফিগারেশন

যত্রতত্র কমান্ড ব্যবহার করা শুরু করার আগে, আপনাকে আপনার পরিবেশটি সঠিকভাবে সেট আপ করতে হবে। কমিটে স্বাক্ষর করার জন্য গিটকে জানতে হয় আপনি কে; যদি আপনি এটি কনফিগার না করেন... user.name y user.emailসিস্টেমটি আপনাকে ত্রুটি দেখাবে অথবা সাধারণ নাম নির্ধারণ করে দেবে। আপনি এই পরিবর্তনগুলি আপনার সমস্ত প্রকল্পে কার্যকর করতে বিশ্বব্যাপী প্রয়োগ করতে পারেন, অথবা চাইলে স্থানীয়ভাবেও ব্যবহার করতে পারেন। রিপোজিটরির উপর নির্ভর করে বিভিন্ন পরিচয়.
উইন্ডোজের আরেকটি গুরুত্বপূর্ণ বিষয় হলো লাইন ব্রেকের ব্যবস্থাপনা। উইন্ডোজ CR+LF ব্যবহার করে, যেখানে লিনাক্স এবং ম্যাকওএস শুধু LF ব্যবহার করে। শুধুমাত্র ফরম্যাটিংয়ের ওপর ভিত্তি করে গিট যাতে ফাইলগুলোকে পরিবর্তিত হিসেবে চিহ্নিত না করে, সেজন্য আপনাকে অবশ্যই চালাতে হবে... git config --global core.autocrlf true উইন্ডোজে। আপনি আপনার কাস্টমাইজও করতে পারেন। ডিফল্ট টেক্সট এডিটর (যেমন ভিজ্যুয়াল স্টুডিও কোড বা সাবলাইম টেক্সট) রিবেসিং বা মেসেজ সম্পাদনার কাজগুলোকে আরও অনেক বেশি সুবিধাজনক করে তোলে।
গিটহাবে সংযোগ স্থাপন: SSH বনাম PAT টোকেন
আপনি যদি শেষ পর্যন্ত গিটহাব ব্যবহার করার সিদ্ধান্ত নেন, তবে প্রমাণীকরণের জন্য আপনার কাছে দুটি উপায় রয়েছে। প্রথমটি হলো এসএসএইচ (SSH), যার জন্য একটি কী পেয়ার (পাবলিক এবং প্রাইভেট) তৈরি করতে হয়। পাবলিক কী-টি গিটহাবে আপলোড করা হয় এবং প্রাইভেট কী-টি আপনার কম্পিউটারে থেকে যায়। এটি সবচেয়ে সুবিধাজনক বিকল্প, কারণ এর ফলে প্রতিবার পুশ করার সময় পাসওয়ার্ড টাইপ করার প্রয়োজন হয় না , যদি আপনার এসএসএইচ-এজেন্ট (ssh-agent) চালু থাকে।
দ্বিতীয় বিকল্পটি হলো পার্সোনাল অ্যাক্সেস টোকেন (PAT)। আপনি যদি অনেকগুলো ভিন্ন ভিন্ন মেশিনে অথবা কন্টিনিউয়াস ইন্টিগ্রেশন পরিবেশে কাজ করেন, তবে এগুলো আদর্শ। যখন আপনি আপনার গিটহাব ডেভেলপার সেটিংসে একটি টোকেন তৈরি করেন, তখন এটি নির্দিষ্ট অনুমতিসহ একটি অস্থায়ী পাসওয়ার্ড হিসেবে কাজ করে । এটি সুরক্ষার একটি অতিরিক্ত স্তর যোগ করে, কারণ আপনি আপনার মূল পাসওয়ার্ড পরিবর্তন না করেই যেকোনো সময় টোকেনটি বাতিল করতে পারেন।
রিমোট নিয়ন্ত্রণ এবং দ্বন্দ্ব নিরসনে দক্ষতা অর্জন
কমান্ডটি বুঝলে একাধিক রিমোট সার্ভার পরিচালনা করা সহজ। git remote addডিফল্টরূপে, প্রধান সার্ভারটির নাম 'origin', কিন্তু আপনি আপনার ইচ্ছামতো যত খুশি রিমোট যোগ করতে পারেন। যদি আপনি URL-এ কোনো ভুল করেন বা প্রোটোকল পরিবর্তন করেন (উদাহরণস্বরূপ, HTTPS থেকে SSH-এ), তাহলে আপনার রিমোটটি ডিলিট করার প্রয়োজন নেই; শুধু ব্যবহার করুন git remote set-url origin .
যদি কখনো দেখেন যে রিমোটটি আগে থেকেই বিদ্যমান, তাহলে আপনি এটির নাম পরিবর্তন করতে পারেন git remote rename অথবা এটিকে সম্পূর্ণরূপে নির্মূল করুন git remote rm। মনে রাখবেন, যে রিমোট সংযোগ বিচ্ছিন্ন করলে ডেটা মুছে যায় না। সার্ভারে, এটি কেবল আপনার স্থানীয় ফোল্ডার এবং বাহ্যিক সার্ভারের মধ্যেকার সংযোগটি বিচ্ছিন্ন করে দেয়, যার ফলে আপনি আপনার কমিট হিস্ট্রি না হারিয়েই একটি ভিন্ন গন্তব্যে পুনরায় সংযোগ করতে পারেন।
রিপোজিটরি আন্তঃসংযোগ আয়ত্ত করতে হলে বেসিক আইডেন্টিটি কনফিগারেশন ও লাইন ব্রেক থেকে শুরু করে ভার্চুয়াল নেটওয়ার্কে গিট ডেমন ব্যবহার করে প্রাইভেট সার্ভার ডেপ্লয় করা এবং ক্লাউডে SSH কী সুরক্ষিত করা পর্যন্ত সবকিছু বুঝতে হয়। আপনি হামাচি দিয়ে লোকাল ওয়ার্কফ্লো বেছে নিন বা গিটহাবে প্রফেশনাল ইনফ্রাস্ট্রাকচার, মূল চাবিকাঠি হলো স্টেবল ভার্সন রক্ষা করার জন্য ব্রাঞ্চগুলো সঠিকভাবে ম্যানেজ করা এবং কোডের নিরাপত্তা নিশ্চিত করতে উপযুক্ত অথেনটিকেশন প্রোটোকল ব্যবহার করা।

