গিট শাখা এবং সেরা অভ্যাস ট্যাগিং


140

আমি বর্তমানে প্রো গিট পড়ে গিট ব্যবহার করতে শিখছি । এখনই আমি শাখা এবং ট্যাগ সম্পর্কে শিখছি। আমার প্রশ্নটি হল আমি কখন একটি শাখা ব্যবহার করব এবং কখন আমার ট্যাগ ব্যবহার করা উচিত?

উদাহরণস্বরূপ, বলুন আমি কোনও প্রকল্পের ১.১ সংস্করণের জন্য একটি শাখা তৈরি করেছি। আমি যখন এই সংস্করণটি শেষ করে ছেড়ে দিই, তখন কি মুক্তির সংস্করণটি চিহ্নিত করার জন্য আমার শাখাটি ছেড়ে দেওয়া উচিত? অথবা আমি একটি ট্যাগ যুক্ত করা উচিত? আমি যদি একটি ট্যাগ যুক্ত করি, তবে আমি কি সংস্করণ শাখাটি মুছে ফেলা উচিত (ধরে নিলাম এটি মাস্টার বা অন্য কোনও শাখায় একীভূত হয়েছে)?

উত্তর:


161

সংক্ষেপে: সেরা অনুশীলনটি শাখা থেকে বেরিয়ে আসে, প্রায়শই মার্জ হয় এবং সর্বদা সিঙ্কে থাকে

মাস্টার শাখা থেকে পৃথক শাখায় আপনার কোড রাখার বিষয়ে বেশ পরিষ্কার কনভেনশন রয়েছে:

  1. আপনি বড় বা বিঘ্নিত পরিবর্তন কার্যকর করতে চলেছেন
  2. আপনি এমন কিছু পরিবর্তন আনতে চলেছেন যা সম্ভবত ব্যবহার করা যাবেনা
  3. আপনি এমন কোনও কিছুতে পরীক্ষা করতে চান যা আপনি নিশ্চিত না যে এটি কার্যকর হবে
  4. যখন আপনাকে শাখা ছাড়তে বলা হবে, তখন অন্যের কাছে মাস্টার করার জন্য তাদের কিছু প্রয়োজন থাকতে পারে

থাম্বের বিধিটি শাখা ছাড়ার পরে, আপনার মাস্টার শাখার সাথে সুসংগত রাখা উচিত। কারণ শেষ পর্যন্ত আপনাকে এটিকে আবার মাস্টারটিতে মার্জ করা দরকার। পিছনে মার্জ হওয়ার সময় বিবাদগুলির বিশাল জটিল জঞ্জাল এড়াতে আপনার প্রায়শই প্রতিশ্রুতিবদ্ধ হওয়া উচিত, প্রায়শই মার্জ হওয়া উচিত।

অনুসরণ করতে ভাল অনুশীলন

একটি সফল গীত শাখাবিন্যাস মডেল দ্বারা ভিনসেন্ট Driessen ভাল পরামর্শ রয়েছে। যদি এই শাখা প্রশাখার মডেল আপনার কাছে আবেদন করে তবে গিট প্রবাহের প্রসারকে বিবেচনা করবে । অন্যরা প্রবাহ সম্পর্কে মন্তব্য করেছেন

ট্যাগিং অনুশীলন

আপনি ইতিমধ্যে জানেন, গিট আপনাকে 1.0-2-g1ab3183 এর মতো সনাক্তকারী প্রতিশ্রুতি দেয় তবে সেগুলি ট্যাগ নয়! গিট ট্যাগ দিয়ে ট্যাগিং করা হয়, এবং গিট ট্যাগ ব্যবহার করে যে ট্যাগগুলি তৈরি করা হয় সেগুলি গিট তৈরির বিবরণ দেওয়ার জন্য ভিত্তি identif অন্য কথায়, গিতে আপনি শাখাগুলি ট্যাগ করবেন না। আপনি কমিটগুলি ট্যাগ করছেন। এটা বলা ঠিক যে ট্যাগটি একটি প্রতিশ্রুতিবদ্ধতার জন্য কেবল একটি টীকা নির্দেশক।

এটি প্রদর্শিত যে ব্যবহারিক উদাহরণ তাকান,

                        / - [ভি 1.0]
                       বনাম
---. ---। --- .--- এস ---.--- এ <- মাস্টার
                         \ 
                           \ -.--- বি <- পরীক্ষা

'V1.0' ট্যাগ দ্বারা নির্দেশিত এস এর প্রতিশ্রুতিবদ্ধ করা যাক। এই কমিট শাখা 'মাস্টার' এবং শাখা 'পরীক্ষা' উভয়ই। যদি আপনি কমিট 'এ' ('মাস্টার' শাখার শীর্ষ) শীর্ষে " গিট বর্ণন " চালান তবে আপনি এরকম কিছু পাবেন v1.0-2-g9c116e9। যদি আপনি কমিট 'এ' (ওরফে 'পরীক্ষা' শাখা) শীর্ষে "গিট বর্ণনামূলক" চালনা করেন তবে আপনি এমন কিছু পাবেন v1.0-2-g3f55e41যেটি ডিফল্ট গিট-বর্ণনা কনফিগারেশনের ক্ষেত্রে। মনে রাখবেন যে এই ফলাফলটি কিছুটা আলাদা। v1.0-2-g9c116e9এর অর্থ হ'ল আমরা 9c116e9ট্যাগের পরে কমিট করে 2 টির, সংক্ষিপ্ত SHA-1 আইডি দিয়ে প্রতিশ্রুতিবদ্ধ v1.0। কোনও ট্যাগ নেই v1.0-2!

আপনি যদি চান যে আপনার ট্যাগটি কেবল শাখার 'মাস্টার' এ প্রদর্শিত হয়, আপনি 'পরীক্ষা' শাখার শাখার শাখার পরে নতুন প্রতিশ্রুতি তৈরি করতে পারেন (যেমন GIT-সংস্করণ-ফাইলে কেবল ডিফল্ট / ফলব্যাক সংস্করণ তথ্য আপডেট করুন)। যদি আপনি 'v1.0.3` যেমন' পরীক্ষা 'শাখায় কমিট করে ট্যাগ করেন তবে এটি কেবল' পরীক্ষা 'থেকে দৃশ্যমান হবে।

তথ্যসূত্র

আমি শিখতে অনেকগুলি, অনেকগুলি দরকারী ব্লগ এবং পোস্ট পেয়েছি। তবে, যা পেশাদারভাবে চিত্রিত হয় সেগুলি বিরল। সুতরাং, আমি একটি পোস্ট সুপারিশ করতে চাই - @ এনভি দ্বারা একটি সফল গিট ব্রাঞ্চিং মডেল । আমি তার উদাহরণ ধার করেছি :)

এখানে চিত্র বর্ণনা লিখুন


4
1.0-2-g1ab3183 গিট দ্বারা নির্মিত একটি সনাক্তকারী যা গিট থেকে প্রাপ্ত তথ্য থেকে বর্ণনা করে তবে এটিকে গিট শনাক্তকারী বলা কিছুটা বেশি। গিট SHA হ্যাশ দ্বারা চিহ্নিত; ট্যাগ এবং শাখা হ'ল মানব গঠন যা গিটকে সহায়তা করে ট্র্যাক করে। যেমন, আপনি যখন মনে করেন কোনও মানুষ কোনও দিন কোনও প্রতিশ্রুতিবদ্ধের জন্য কোনও সুবিধাজনক বুকমার্ক সন্ধান করতে চাইবে তখন একটি ট্যাগ তৈরি করুন।
mabraham

2
গিট মহাবিশ্বের বহু-মাত্রিকতার এক দুর্দান্ত চিত্রণ। সুন্দর। ধন্যবাদ
টোপ

এটি লক্ষণীয় যে অনেক প্রকল্পের এই চিত্রটিতে প্রদর্শিত কিছু লেনের প্রয়োজন নেই। কিছু প্রকল্পের জন্য কেবল এখানে বিকাশ এবং বৈশিষ্ট্য বলা হয়। এটি প্রায়শই ওয়েব অ্যাপ্লিকেশনগুলির ক্ষেত্রে সত্য যা ইচ্ছায় মোতায়েন করা যেতে পারে for
usr

37

আপনার কাছে একই সময়ে 2 টি আলাদা সংস্করণ সংগ্রহস্থল থাকলে একটি শাখা ব্যবহৃত হয়। ট্যাগ আপনার ভাণ্ডারে সময় পয়েন্ট চিহ্নিত করার একটি উপায়।

প্রকাশিত সংস্করণ চিহ্নিত করতে আপনার ট্যাগ যুক্ত করা উচিত। তারপরে যদি আপনাকে এই রিলিজটিতে বাগ ফিক্সগুলি করতে হয় তবে আপনি ট্যাগে একটি শাখা তৈরি করবেন।

আপনি কেবল সেই শাখাগুলি মুছতে চান যা আবার হেড [বা অন্য কোনও শাখায়] মেশানো হয়েছে।


3
ওহ ... এবং আমি ধরে নিচ্ছি যে আপনি বোঝাতে চেয়েছেন যে শাখাটি অন্য শাখায় একত্রিত হয়েছে, যেমন মাস্টার। আমি যখনই একটি চেকআউট করি তখনই মাথা সরানো হয়, তাই না?
কোড-গুরু

হেড সাধারণত একটি শাখার দিকে নির্দেশ করে (যদি আপনি আলাদা হেড মোডে না থাকেন), তাই
শিরোনামটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.