সংস্করণটির জন্য আমি কেন বনাম রিলিজ / বিটা শাখা ট্যাগগুলি ব্যবহার করব?


114

আমি প্রায় এক বছর ধরে গিট ব্যবহার করছি এবং ট্যাগ করতে ভাল ব্যবহার করতে চাই, ভাল, ট্যাগ বিভিন্ন সংস্করণে কমিট করে। ট্যাগগুলির সাথে কাজ করার জন্য কমান্ডগুলিতে আমি প্রচুর তথ্য পেয়েছি, তবে আমি কী জানতে চাই যে কেন আমি কেবল নতুন একটি শাখা তৈরি করতে পারি 1.1.0এবং পুরোপুরি আমার মনকে ক্লুড করতে না পারলে ট্যাগিং কেন ব্যবহার করা উচিত? গিট কমান্ডের নতুন সেট?

ব্রাঞ্চিংয়ের চেয়ে ট্যাগিংয়ের জন্য অনেকগুলি ভাল কারণ থাকতে হবে তবে আমি জানতে চাই যে এই সুবিধাগুলি কী।

উত্তর:


96

ট্যাগগুলি মূলত প্রকল্পের নির্দিষ্ট সংস্করণে ভবিষ্যতের রেফারেন্সের জন্য কমিটকে ট্যাগ করে ব্যবহার করা হয়। আপনি সর্বদা অবশ্যই শাখা ব্যবহার করতে পারেন তবে আপনি যদি সংস্করণগুলি অনেকগুলি পরিবর্তন করেন তবে আপনি প্রচুর অব্যবহৃত বা খুব কম ব্যবহৃত শাখাগুলি দিয়ে শেষ করবেন।

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

সম্পাদনা: এখানে Git যে আমি আমার সমস্ত প্রকল্প জন্য ব্যবহার ব্যবহার করার জন্য একটি চমৎকার উপায়।


হেহ (: এটা সত্যিই একটি মহান কর্মপ্রবাহ যে কভার সব সম্ভব সমাধান।
Hakan Deryal

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

2
আমার জন্য এনভি পদ্ধতিটির সৌন্দর্য হ'ল আমার এটি প্রাথমিকভাবে বুঝতে হবে না। আমি যা করতে চাইছিলাম তার জন্য কেবল বিভাগটি সন্ধান করতে এবং কমান্ডগুলি টাইপ করতে পারি। কয়েকবার পরে এটি স্বাভাবিকভাবেই হয়ে উঠল এবং কয়েকদিনের সাথে আমি শাখার চারপাশে নাচের মতো ছিলাম!
কিলরোয়

এটিকে অন্ধভাবে প্রয়োগ করে গিটফ্লো পদ্ধতির বোঝার প্রত্যাশা আপনার পরিস্থিতির জন্য আপনি যে সমস্ত সরলিকরণ প্রয়োগ করতে পারেন তা আপনাকে মিস করবে। এবং গিটফ্লো বেশিরভাগ দলের পক্ষে সত্যই অনুপযুক্ত: হয় অতিরিক্ত জটিল বা অতিরিক্ত সাধারণ simple
টুলফোজার

151

একটি ট্যাগ অপরিবর্তনীয়

আপনি "১.০.০" নামে একটি শাখা তৈরি করতে পারেন - আপনি বা অধিকারের অধিকারী যে কেউই কেবল সেই শাখায় চাপ দিতে পারেন (ইচ্ছাকৃতভাবে বা না) এবং 1.0.0 এর অর্থ পরিবর্তন করতে পারেন।

আপনি ট্যাগ সহ এটি করতে পারবেন না, একবার আপনি ট্যাগ তৈরি করেন - এটিই; ট্যাগ 1.0.0 এর অর্থ হ'ল এবং পরিবর্তন করা যায় না *

এটি একটি ট্যাগ এবং একটি শাখার মধ্যে প্রধান ব্যবহারিক পার্থক্য

* আপনি কোনও ট্যাগ মুছে ফেলতে এবং পুনরায় তৈরি করতে পারেন যার মাধ্যমে একটি ট্যাগ পরিবর্তন করা যায়, তবে অবশ্যই দুর্ঘটনাক্রমে নয়।


18

আমি একটি ওয়ার্কফ্লো ব্যবহার করতে চাই যা ট্যাগ এবং শাখা উভয়কেই অন্তর্ভুক্ত করে । প্রকাশিত কোড বা উল্লেখযোগ্য উন্নয়ন বিল্ডগুলি চিহ্নিত করার জন্য ট্যাগগুলি ভাল। শাখাগুলি একটি নির্দিষ্ট সংস্করণে প্রাসঙ্গিক সমস্ত পরিবর্তন ট্র্যাক রাখতে ভাল।

এই ধরণের ওয়ার্কফ্লো সম্পর্কে এখানে একটি ভাল লেখার ব্যবস্থা রয়েছে: http://nvie.com/posts/a-successful-git-branching-model/


18

শাখা এবং ট্যাগ একই জিনিস (একটি প্রতিশ্রুতির প্রতি নির্দেশক, যেমন। "রেফ" ), শাখা ব্যতীত স্বয়ংক্রিয়ভাবে পরবর্তী প্রতিশ্রুতিতে সরে যায় যখন ট্যাগ একই প্রতিশ্রুতিতে 1 টি চিরতরে থাকে ।

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

আপনি যদি এর জন্য কোনও শাখা ব্যবহার করার চেষ্টা করে থাকেন তবে এটি অজ্ঞাতসারে ভিন্ন প্রতিশ্রুতিতে যেতে পারে, যেখান থেকে মুক্তিটি নির্মিত হয়নি built


1 আপনি ট্যাগটি মুছে না দিলে অবশ্যই।

দ্রষ্টব্য: আমি বুঝতে পারি যে এটি একটি পুরানো প্রশ্ন, তবে আমি অনুভব করেছি যে শাখা এবং ট্যাগের মধ্যে সাদৃশ্য (এবং একটি গুরুত্বপূর্ণ পার্থক্য) অন্য উত্তরে যেমন পরিষ্কার হতে পারে ঠিক তেমনভাবে প্রকাশিত হয়নি।


প্রিয় @ ডাউনভোটার, ডাউনভোটের কোনও নির্দিষ্ট কারণ?
ব্র্যাঙ্কো দিমিত্রিজেভিক

আমি আপনার উত্তরটিকে নিম্নচলিত করি নি তবে "শাখা স্বয়ংক্রিয়ভাবে পরবর্তী প্রতিশ্রুতিতে চলে আসে" বলতে কী বোঝ? শাখাগুলি স্বয়ংক্রিয়ভাবে কোনও প্রতিশ্রুতিতে সরে না। git commitনতুন কমিটের রেফারেন্স দিতে চেক আউট ব্রাঞ্চের মাথা চালানো আপডেট করে, হ্যাঁ, তবে অন্য কোনও শাখা "স্বয়ংক্রিয়ভাবে" পরবর্তী কমিটে সরে যায় না। আপনার উত্তরের প্রথম অনুচ্ছেদটি স্পষ্ট করা উচিত।
টুথব্রাশ

1
@ টুথব্রাশ শিওর, এটি "স্বয়ংক্রিয়ভাবে সরানো" বলতে আমি বোঝাতে চাইছি। যাইহোক, শাখাটি কোনও প্রতিশ্রুতি সত্যিকার অর্থে "নিজস্ব" হয় না, এটি এমনকি একটি কমিটের সেটকেও নির্দেশ করে না, এটি কেবল একটি প্রতিশ্রুতিতে নির্দেশ করে (এবং বাকীটি কখনও কখনও অনর্থকভাবে কমিট গ্রাফটি হাঁটার মাধ্যমে বোঝানো যেতে পারে)। গিটের অধীনে, শাখাটি কমিটের .git\refs\headsহ্যাশ সহ কেবল একটি লাইন ফাইল । কমিটগুলি নিজেরাই মনে রাখে না যে কোন শাখা তাদের তৈরি করেছে। এটি মার্চুরিয়াল থেকে পৃথক, উদাহরণস্বরূপ, যেখানে শাখার তথ্য কমিটের মেটাডেটাতে লেখা যেতে পারে।
ব্র্যাঙ্কো দিমিত্রিজেভিক

হ্যাঁ, তবে অনেক লোক তা জানেন না - বিশেষত নতুন যারা গিটের সাথে জিনিসগুলি করার বিষয়ে অনলাইনে পরামর্শ দেওয়া হয়েছে এমন অসংখ্য উপায়ে সম্পর্কে বিভ্রান্ত।
টুথব্রাশ

6

আপনি ইতিহাসে গুরুত্বপূর্ণ কমিটগুলি নোট করতে ট্যাগ ব্যবহার করেন। "বিল্ড সার্ভারটি যখন ভেঙেছিল তখন বৃহস্পতিবার আমরা এই ভার্সনটির জন্য ঠিক সেই প্রতিশ্রুতিটি ব্যবহার করেছি"। আপনি যদি ট্যাগের পরিবর্তে একটি শাখা ব্যবহার করেন তবে আপনি কখনই সঠিক প্রতিশ্রুতি ব্যবহার করতে পারবেন তা জানতে পারবেন না। আপনি কেবল জানেন "আমরা এই শাখায় কোথাও 1.1.0 সংস্করণ প্রকাশ করেছি", যদি না আপনি নিজেই সেই প্রতিশ্রুতিটির জন্য সঠিক হ্যাশটি লিখে না রাখেন, যার কারণে আপনি ট্যাগগুলি প্রথম স্থানে ব্যবহার করেন :)


4
আমি মনে করি তার অর্থ 1.1.0 নামের একটি শাখা তৈরি করা এবং এটি আর ব্যবহার না করা, তাই এটি নামকৃত সংস্করণে প্রকল্পটি উপস্থাপন করবে।
হাকান ডেরিয়াল

2

অন্যান্য উত্তরগুলি ছাড়াও, এখানে আমার 2 সেন্ট।

সংক্ষিপ্ত উত্তর: রিলিজ সংস্করণগুলির জন্য ট্যাগগুলি ব্যবহার করুন

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

নিম্নলিখিত নিবন্ধের বিভাগটি দেখুন যা দেখায় যে কীভাবে কোনও হটফিক্স লেখকের গিট ওয়ার্কফ্লোতে মার্জ করতে হয় - https://hackernoon.com/a-branching-and-releasing-strategy-that-fits-github-flow-be1b6c48eca2

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