গিট বৈশিষ্ট্যযুক্ত শাখাটি মুছতে সঠিক সময়টি কখন?


90

আমি প্রায় ৮২ টি বৈশিষ্ট্যযুক্ত শাখাগুলি ঝুলিয়ে রাখতে চাই না, তাই আমি ভাবছি যে বৈশিষ্ট্য শাখাটি মাস্টার হিসাবে মার্জ করার সাথে সাথে কেবল বৈশিষ্ট্য শাখাটি মুছে ফেলার সম্ভাব্য ঘাটতিগুলি কী।

কর্মধারা:

git co -b feat-xyz
hack hack
git ci
hack some more
git ci
git co master
git merge feat-xyz
smoke test
git br -d feat-xyz

এখানে কোন সমস্যা?


4
আমি কোনও সমস্যা বলব না কারণ আপনার যদি সত্যিই তাদের প্রয়োজন হয় তবে আপনি সর্বদা মুছে ফেলা শাখাটি পুনরুত্থিত করতে পারেন।
slebetman

@ স্লেবেটম্যান যতদূর আমি জানি মুছে ফেলা শাখাটি পুনরুত্থিত করা যাবে না। তবে শাখাটি মুছে ফেলার আগে যদি পুরোপুরি মাস্টারের সাথে মিশে যায় তবে আর শাখার আর কোনও প্রয়োজন হবে না।
শিমোন

4
@ সাইমন হ্যাঁ আপনি পারেন। গিট কখনই কমিটগুলি মুছে দেয় না আপনি যখন আপনার শাখাটি মুছবেন তখন আপনি কেবল তার নামটি মুছবেন। মুছে ফেলা শাখাটি পুনরুত্থিত করার জন্য আপনাকে সেই শাখায় প্রতিশ্রুতিবদ্ধ সর্বশেষ জিনিসটি মনে রাখতে হবে এবং আপনি এটি সন্ধান করতে পারেন git reflog। তারপরে হ্যাশ
slebetman

@ স্লেবেটম্যান কেবলমাত্র সত্য হবে যদি শাখাটি শেষ পর্যন্ত একীভূত হয়। যদি কমিটগুলি পিছনে ফেলে রাখা হয় তবে তারা অবশেষে অ্যাক্সেসযোগ্য হয়ে উঠবে এবং নির্দিষ্ট সময়ের পরে আবর্জনা সংগ্রহের অধীনে থাকবে। এমনকি রিফ্লগের এন্ট্রিগুলি শেষ পর্যন্ত মুছে যাবে, আপনার ডিফল্টরূপে প্রায় 90 দিন রয়েছে have
সোনাররাটিও

@ গোল্ডেনেরটিও: এর জন্য কোনও রেফারেন্স?
slebetman

উত্তর:


63

মার্জ হওয়ার পরে মুছুন স্বাভাবিক উপায়। এই কারণেই git branch -d yourbranchnameশাখাটি মুছে ফেলার আগে এটি পুরোপুরি একত্রিত হয়েছে কিনা তা পরীক্ষা করে পরীক্ষা করে নিন।

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

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

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


4
ট্যাগ আউট পরীক্ষা করা শিরোনাম সেট করে তবে স্বয়ংক্রিয়ভাবে একটি শাখা তৈরি করে না। একটি শাখা ছাড়াই প্রতিশ্রুতি নেভিগেশন শিরোনাম এটি বিচ্ছিন্ন করে তোলে।
বাইনারি

4
আপনি ঠিক বলেছেন, এটি রেফের পরিবর্তে কমিট আইডিতে হেড সেট করে। আমার ওপির সেই অংশটি ভুল। আমার এটি আপডেট করা উচিত।
মাস্কঙ্ক

97

আমি একীভূত হওয়ার পরে মুছে ফেলি, তবে git merge --no-ffদ্রুত ফরওয়ার্ডিং এড়াতে আমি সর্বদা একটি করি , যাতে গ্রাখের ইতিহাস শাখাটি দৃশ্যমান হয়। বৈশিষ্ট্য শাখাটি যেখানে উন্নয়ন শাখা থেকে চলে গেছে এবং কোথায় ফিরে এসেছিল তার ইতিহাস আমার কাছে থাকতে চাই:

দ্রুত-ফরওয়ার্ড ছাড়া বা ছাড়া একত্রিত করা

এটি ভিনসেন্ট ড্রাইসেনের একটি সফল গিট শাখার মডেল থেকে নেওয়া , এটি আমার বেশিরভাগ প্রকল্পের জন্য আবেদন করে এমন গিটের সাথে ব্যবহার করার জন্য একটি খুব সুন্দর ওয়ার্কফ্লো।


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

4
আমার তো সমস্যা হয়নি। আমাদের দলটি গিথুব দিয়ে সিঙ্ক করে, এবং আমার সাধারণত পুনঃস্থাপনের প্রয়োজন হয় না, তবে আমি মনে করি না যে এটি এখানে কোনও খারাপ দিক। এমনকি আপনি যদি আপনার বিকাশ এবং বৈশিষ্ট্য শাখাটি পুনরায় ব্যবহার করেন তবে শাখাটি গ্রাফটিতে দৃশ্যমান থাকে এবং বৈশিষ্ট্য শাখার বিকাশের সাথে সম্পর্কিত যা হয় তা নয়, আপনি যখন সেই শাখাটি তৈরি করেছিলেন তখন আপনি মূলত কোথায় গিয়েছিলেন commit
lkraider

@ ইক্রেডার, অনুস্মারকটির জন্য ধন্যবাদ। আমি যখন নিবন্ধটি প্রথম দেখি যখন গিট শিখছিলাম তখন এটি আমার কাছে আরও বেশি বোঝা যায়। আমি আমার বৈশিষ্ট্যগুলি শাখাগুলি পুনরায় সাজিয়েছি, তবে আমি merge --no-ffআবার মাস্টারটিতে ফিরে আসি কারণ আপনি যেমন বলেন আপনি ইতিহাসটি দেখতে পাচ্ছেন।
bstpierre

7

আপনি দুটি কারণ সম্পর্কে কেন ভাবতে পারেন যে আপনি কিছু সময়ের জন্য কোনও বৈশিষ্ট্য শাখা রাখতে চান:

  • প্রবাহের মাধ্যমে আরও কাজের জন্য এটি আপনার কাছে ফিরে আসার সুযোগ রয়েছে।
  • অন্যান্য বিকাশকারীরা সম্ভবত মাস্টারটিতে অন্য কিছু না চেয়ে এই বৈশিষ্ট্যটি চান।

অনুশীলনে, বেশিরভাগ সময় একত্রিত হওয়ার পরে মুছে ফেলা ঠিক ঠিক is


6

টিপিক্যাল ওয়ার্কফ্লো হবে

 // Create new branch
 $ git checkout -b myfeature
 // and then do some changes and commit them

 // Switch to master branch
 $ git checkout master

 // Merge myfeature to master. --no-ff will always keep branch information.
 $ git merge --no-ff myfeature

 // Delete myfeature branch
 $ git branch -d myfeature

 // Push the changes
 $ git push origin master

1

আমি মনে করি এটিই আদর্শ ওয়ার্কফ্লো (সংযুক্তির পরে মুছে ফেলা)

সম্পাদনা সম্পাদনা করুন, অন্তত স্বল্পজীবী শাখাগুলির জন্য একত্রীকরণের পরিবর্তে, আমি মনে করি ধারণাটি তাদের মাস্টারের কাছে পুনঃব্যবস্থা করা। তারপরে আপনি একটি রৈখিক পরিবর্তন ইতিহাসের সাথে শেষ করেন এবং পুরো শাখাটি মূল ট্রাঙ্কের অংশ হয়ে যায়। এক্ষেত্রে আপনার সমস্ত পরিবর্তন রয়েছে যাতে আপনার স্পষ্টভাবে কোনও অনুলিপি প্রয়োজন হয় না।


তাই সত্যিই কোন শাখা চারপাশে রাখার কোন মানে নেই, তাই না?
bstpierre

4
আমি দৃ reb়ভাবে "পুনর্বাসনা" এড়ানো পরামর্শ দিচ্ছি। রিবেসিং সাধারণত ক্ষতিকারক, কিছু ক্ষেত্রে কেবল কার্যকর।
ডায়েটরিচ এপ্প

9
রিবেসিং আপনার স্থানীয়, ব্যক্তিগত শাখাগুলির জন্য একদম যুক্তিসঙ্গত কর্মপ্রবাহ। এটা তোলে উদাহরণস্বরূপ rebasing ( "rebasing দ্বারা মূল প্রজেক্টের কাজে সুসংগত রাখার খুব সাধারণ ব্যাপার নিচে ")। এটি খুব কম সাধারণ, এবং সাধারণত ক্ষতিকারক, * রিবেস আপ করা *। সেকেন্ডের উত্তরটি সত্যই বোঝায় না, কারণ আপনি রিস্ট্রি দিচ্ছেন বা প্রবাহের পরিবর্তনগুলিতে একত্রিত হচ্ছেন না কেন, আপনাকে এখনও সেই জিনিসটিকে কোনওভাবে "আপ" ঠেলে দিতে হবে। এমনকি আপনার স্থানীয় শাখায়ও আপনাকে কোনও কোনও মুহুর্তে মাস্টার করতে আপনার বৈশিষ্ট্যে মার্জ করতে হবে। আপনার বৈশিষ্ট্যগুলিতে প্রত্যাবাসিত থাকার সুবিধাটি হ'ল এই মার্জটি দ্রুত এগিয়ে যায়।
মাস্টঙ্ক

4
রিবিসিং শাখাগুলি নিয়ে নজর রাখার মতো কিছু আছে, যদিও সম্প্রতি আমাকে কিছুটা বিট করেছে। এটি এখন সুস্পষ্ট, তবে আমি দীর্ঘকালীন শাখায় কয়েক মাস ধরে চলেছি, সর্বদা মাস্টারের বিরুদ্ধে পুরো জিনিসটি প্রত্যাখ্যান করি। এটি 600 টি প্রায় চমৎকার, দানাদার কমান্টগুলি সমাপ্ত হয়েছিল, তবে মাস্টার বুনো রিফ্যাক্টর ছিলেন এবং প্রায় বেশ কয়েকবার পুরোপুরি পরিবর্তিত হয়েছিলেন। প্রতিবার পুরো শাখাটি ছাড় দিয়ে আমি তাদের পুরানো কমিটগুলি তাদের মাস্টার কমিটগুলির সাথে সংযোগ থেকে কেটে দিছিলাম যা তাদের বোঝায়। এখন আমি প্রয়োজনের সময় মাস্টারগুলিতে একীভূত হতে পছন্দ করি। আমি কেবল তখনই রিবাজ করব যদি শাখার ইতিহাস একেবারে প্রভাবিত না হয়।
গ্যারি ফিক্সার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.