এই উত্তরটি কীভাবে প্রবীণ প্রোগ্রামারদের আগ্রহী করে তোলা যায় git
, কীভাবে git
দ্রুততর উপায়টি শিখতে হয় তা সম্পর্কে না জানার চেষ্টা করে - তার জন্য, দুর্দান্ত গিট বইটি দুর্দান্ত, বা কোনও পরিমাণ টিউটোরিয়াল (=> গুগল)। এই উত্তরটির সাথে যেতে ভাল লিঙ্কগুলি হ'ল গিটটি একটি সম্পূর্ণরূপে কার্যকরী ডেটা কাঠামো বা বিশেষত সংক্ষিপ্ত আকারে কীভাবে গিট আপনার ডেটা সঞ্চয় করে ।
আমি ভয় পাচ্ছি যে এ সম্পর্কে আমার কাছে বরং একটি বিব্রত দৃষ্টিভঙ্গি রয়েছে। আমি হুবহু আপনার জুতা মধ্যে ছিলাম - আমি একটি git
নির্বোধ এবং svn
এর সাথে দূরে একটি দল রূপান্তর করতে চেয়েছিলেন , আসুন এটি মুখোমুখি, বিয়োগফল ফলাফল। আমার ক্ষেত্রে এটি সক্রিয়ভাবে আমার নিজস্ব ধারণাটি পরিবর্তনের দিকে পরিচালিত করেছে, এবং যে লোকদের গ্রহণ করে, কেবল "সুখী হতে বাধ্য করা যায় না"। লোকেরা কম্পিউটার নয়, তাদের প্রোগ্রাম করা খুব অবিশ্বাস্য। চেষ্টা করার জন্য আমি এখনও খুশি, এটি আমার পেশাগত জীবনে আমি যা করি এবং কী করতে চাই না তার চেয়ে বরং নরমভাবে আমাকে দেখায়।
এমন কিছু লোক রয়েছে যারা নতুন জিনিস জড়িত হওয়ার সময় প্রেরণা অর্জন শুরু করে এবং এমন কিছু লোক রয়েছে যারা অবিচ্ছিন্ন হন। এর সাথে কোনও সম্পর্ক নেই git
, তবে git
বিশেষত আপনার পক্ষে সর্বদা "আপনি যদি svn
ঠিক থাকেন তবে এটিকে কেন ব্যবহার করা উচিত?" এর প্রভাব রয়েছে যা একটি বিশাল মানসিক বাধা।
এছাড়াও, সত্যিকার অর্থে গ্রুকিংয়ের git
জন্য বিমূর্ত ডেটা কাঠামোতে তীব্র আগ্রহ প্রয়োজন। এটি অবিশ্বাস্য মনে হতে পারে, তবে আমার অভিজ্ঞতায় এমন প্রোগ্রামাররা আছেন যাঁর মোটেই আগ্রহ নেই এবং যারা বিরক্ত হয়ে পড়েছেন এবং সাধারণ অ্যারেগুলির চেয়ে জটিল উপাদানগুলির দ্বারা ভারাক্রান্ত। আপনি যে কাজটি করছেন সেগুলি করা উচিত কিনা তা আপনি পিছনে পিছনে তর্ক করতে পারেন, তবে এটি এটি।
লোকেরা যদি এতে আগ্রহী না হয় তবে তারা তা বুঝতে পারবে না। সোজা এবং সরল. আমি বাজি ধরতাম যে স্কুলে খারাপ গ্রেডের বুদ্ধি না থাকা, হতাশার মূল কারণ।
এটি বলেছিল, এখানে একটি পাঠ্যক্রম হবে যেহেতু আমি এটি প্রয়োগ করব, জ্ঞানের নীচে থেকে শীর্ষে স্থাপনের উপর ভিত্তি করে। এটি আমার পক্ষে কাজ করেনি, তবে আপনি এটি নিজের তৈরি করতে অনুপ্রেরণা হিসাবে নিতে পারেন।
গুই
নিম্নলিখিত ক্রিয়াকলাপের জন্য প্রয়োজনীয়ভাবে জিইউআই সমর্থন প্রয়োজন না হওয়ায় ( git add
হ্যালো ওয়ার্ল্ড রিপোজিটরিতে ...), এটি শুরু থেকেই সংগ্রহস্থলটি ভিজ্যুয়ালাইজের জন্য জিইউআই পেতে প্রচুর পরিমাণে সহায়তা করে । কোনটি ব্যবহার করবেন তা যদি আপনি সিদ্ধান্ত নিতে না পারেন তবে gitk
সর্বশেষ অবলম্বন হিসাবে গ্রহণ করুন । যদি আপনার ছেলেরা কোনও ধরণের ভিজ্যুয়াল এডিটর ব্যবহার করেন তবে তাদের git
জিইউআই উপাদানটি আবিষ্কার করুন।
(স্ট্যাটিক) ডেটা স্ট্রাকচার কী is
অভ্যন্তরীণ তথ্য প্রকারের ব্যাখ্যা দিয়ে শুরু করুন (এর মধ্যে কেবল তিনটি প্লাস- এক রয়েছে: ব্লবস, ট্রি, কমিট, টীকাগুলি ট্যাগ, যার মধ্যে শেষটি এই পর্যায়ে যা নিয়ে উদ্বেগ নেই) এবং তাদের কাঠামো। আপনি হোয়াইটবোর্ডে / পেন্সিল দিয়ে সহজেই এটি করতে পারেন; গাছটি অঙ্কন করা সহজ কারণ এটি কখনই পরিবর্তন করা যায় না, আপনি আক্ষরিক অর্থে সব সময় স্টাফ যোগ করতে পারেন। আপনি একটি সদ্য নির্মিত স্থানীয় ভান্ডারগুলিতে একটি প্লে সেশন git cat-file
করতে পারেন এবং প্রকৃত অবজেক্টগুলি এটিকে দেখানোর জন্য যে তারা আসলে বিজ্ঞাপন হিসাবে তুচ্ছ হিসাবে দেখাতে ব্যবহার করতে পারেন ।
আপনি যদি তাদের বুঝতে এটি সহায়তা করতে পারেন
- ... ইতিহাসে আক্ষরিক অর্থে কেবল 3 ধরণের অবজেক্ট রয়েছে, এগুলি সবগুলিই খুব সাধারণ, প্রায় তুচ্ছ এবং
- ... বেশিরভাগ
git
সাবকম্যান্ডগুলি নিকৃষ্ট তুচ্ছ ক্রিয়াকলাপগুলির সাথে কেবল একটি উপায়ে বা অন্য কোনও উপায়ে "ম্যাসেজ" করে (মূলত, কেবল একটিই রয়েছে: কোথাও একটি নতুন অঙ্গীকার যুক্ত করুন), এবং ...
- ... সবকিছু সামনে সহজেই আপনার সামনে দেখা যেতে পারে
ls
এবং সাথে git cat-file
...
তারপরে তাদের কাছে আসলে ভান্ডারটিতে যা আছে তার মানসিক অনুবাদ থাকবে। এই মুহুর্তে, সিনিয়ররা মনে রাখতে পারে যে অভ্যন্তরীণগুলি হ'ল আরকেন svn
ম্যাজিক (কখনও কখনও এসএনএন সংগ্রহস্থলের ভিতরে তালা নিয়ে, বা "পুনরায় সংশ্লেষক" শাখা এবং এই জাতীয় সমস্যা ছিল?) এবং এটি তাদের কিছুটা প্রেরণা জাগাতে পারে ।
একটা সমস্যা, বিশেষ করে ব্যবহার করা মানুষের সাথে svn
, যা এই ধারণার ব্যবহার করতে পারেন যে এক কমিট (বস্তু, না কর্ম) সর্বদা হয় পুরো ডিরেক্টরি গাছ। ইন svn
, ব্যক্তি পৃথক ফাইল প্রতিশ্রুতিবদ্ধ করতে ব্যবহৃত হয়। এটি একেবারে ভিন্ন পন্থা। ওহ, এবং একই শব্দ "প্রতিশ্রুতিবদ্ধ" উভয়ই স্থির বস্তুর জন্য ব্যবহৃত হয় এবং কোনও ক্রিয়াও সহায়তা করে না।
svn
ছেলেদের জন্য অন্যান্য সমস্যাটি হ'ল svn
বৃক্ষ নয়, রৈখিক ইতিহাস ব্যবহার করে। এটি আবার বন্যার চেয়ে আলাদা। সুতরাং এই সময় এই পার্থক্য অনেক অনেক নির্দেশ করুন ।
কাঠামোর শর্তাবলী ক্রিয়া ব্যাখ্যা
যখন তারা বুঝতে পেরেছে যে git
ভাণ্ডারগুলি কোন অংশ থেকে তৈরি করা হয়, তখন পৃথক সাবকম্যান্ডগুলি সেগুলির ক্ষেত্রে কী করে তা ঠিক তাদের দেখানোর সময় git
।
আমি কথা বলছি add
, commit
স্থানীয় শ্রমিক ডিরেক্টরি ও পর্যায় (নিশ্চিত তারা এটাও বোঝেন যে পরিশ্রমী ডিরেক্টরি উপস্থাপনকারী এলাকা যা সংগ্রহস্থলের হিসাবে একই নয় হিসাবে একই নয় তা নিশ্চিত করুন) সাথে।
যখন তারা বুঝেছি যে এই কমান্ড কেবল গাছ হত্তয়া (যা, আবার, এই পর্যায়ে, নিয়ে গঠিত 3 ধরনের - ব্লব, গাছ, করে না শুধুমাত্র করে), আপনি একটি প্রথম কি করতে পারেন git push
এবং git pull
(দ্রুত অগ্রসর মোডে! ) এগুলি দেখানোর জন্য যে git
আক্ষরিকভাবে কেবলমাত্র এটির জিনিসগুলি চারপাশে চাপ দিচ্ছে, হ্যাশগুলি সত্যই কেবলমাত্র সামগ্রী হ্যাশ, আপনি সহজেই এই জিনিসটিকে একটি ফাইল সিস্টেমের অনুলিপি কমান্ড এবং এর সাথে অনুলিপি করতে পারেন।
স্পষ্টতই, এই আদেশগুলির যে কোনও অপ্রয়োজনীয় বিকল্প থেকে দূরে থাকুন, আমরা এখানে কথা বলছি git add hello.txt
।
শাখা
মনে রাখবেন যে শাখা প্রশাখাগুলি বিশেষত svn
লোকেদের পক্ষে শক্ত , কারণ এটি সম্পূর্ণ আলাদা। svn
মডেল অনেক , ঠাহর করা সহজ সেখানে মূলত ঠাহর করার কিছুই নেই - এটি প্লেইন দৃশ্য হয়। git
মডেল এত না। নিশ্চিত করুন যে তারা শুরু থেকেই ঠিক সচেতন ছিল যে শাখা এবং ট্যাগগুলি কেবল "স্টিকি নোট" কোথাও দেখানো হয়েছে এবং স্থির, অপরিবর্তনীয় ইতিহাসের দিক থেকে আসলে "অস্তিত্ব" নেই।
তারপরে আপনি তাদের সাথে আসলে কী করতে পারেন তা দেখানোর জন্য সহজ উদাহরণের পরে উদাহরণ করুন। আপনি যেমন নিজেকে অভ্যস্ত বলে মনে করছেন git
, সেখানে অনুপ্রেরণা খুঁজে পেতে আপনার কোনও সমস্যা হওয়া উচিত নয়। নিশ্চিত হয়ে নিন যে তারা কীভাবে গাছটি বাড়ায় সেই ক্ষেত্রে সর্বদা এটি দেখে।
তাদের যদি এটি নীচে থাকে তবে আপনি কীভাবে git pull
সত্য তা ব্যাখ্যা করতে পারেন git fetch && git merge
; সমস্ত সংগ্রহস্থলগুলিতে কীভাবে হুবহু একই জিনিস থাকে ( গিট অবজেক্ট ডিরেক্টরিটির ভিতরে থাকা git fetch
জিনিসগুলি অনুলিপি করা প্রায় একই scp
) এবং আরও অনেক কিছু।
সম্ভবত, যদি এই সময়ের মধ্যে আপনি তাদের আগ্রহ জাগ্রত করার জন্য পৌঁছে না যান, তবে আপনি ঠিক ততটাই হাল ছেড়ে দিতে পারেন, তবে তারা যদি এতদূর যেতে সক্ষম হন তবে তাদের সমস্ত মানসিক সরঞ্জাম তাদের হাতে রয়েছে, এবং সেখানে খুব কম হওয়া উচিত আর জড়িত ভয়। বাকী (গিট ওয়ার্কফ্লো ...) তখন উতরাই হওয়া উচিত।
শেষ কথা
এটি প্রচেষ্টার মতো শোনায় এবং এটি সত্যই really এটিকে "এই প্রকল্পের জন্য আমাদের এটি প্রয়োজন" হিসাবে বিক্রি করবেন না তবে "এটি আপনাকে ব্যক্তিগতভাবে বিকাশ করতে সহায়তা করে এবং আপনার পরবর্তী সমস্ত মিথস্ক্রিয়াতে আপনাকে সহায়তা করবে"। এর জন্য আপনার অনেক সময় প্রয়োজন , এবং সময় অর্থ। যদি আপনার এই বিষয়ে পরিচালনার স্বীকৃতি না থাকে তবে এটি উপযুক্ত নয়; আপনার সম্ভবত এটি আপনার বসের সাথে কথা বলা উচিত।
আপনি যদি সিদ্ধান্ত নেন যে আপনি বিকাশকারীদের পড়াশোনা ছেড়ে দিতে চান যা আপাতদৃষ্টিতে এটি উপলব্ধি করতে সক্ষম নয় তবে git
ভবিষ্যতে আপনার অবশ্যই ব্যবহার করা উচিত , git
রান্না-আপ স্ক্রিপ্টগুলি বা কিছু জিইআইআই দ্বারা সমস্ত ইন্টারঅ্যাকশন প্রতিস্থাপনের বিষয়টি বিবেচনা করুন যা সমস্ত git
বিবরণ সরিয়ে নিয়ে যায়। স্ক্রিপ্টগুলিতে সমস্ত ত্রুটি নিয়ন্ত্রণ ইত্যাদি ourালাও, এবং এটি কার্যকর করার চেষ্টা করুন।