সমস্ত কমিটকে একটি শাখা থেকে টানুন, নির্দিষ্ট কমিটগুলি অন্যটিতে চাপুন


104

আমার নিম্নলিখিত শাখা আছে:

  • master
  • production

এবং নিম্নলিখিত দূরবর্তী শাখা:

  • origin/master
  • origin/production

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা origin/masterশাখাটি নিয়ে আসে এবং আমার শেষ আনতে ( log -p master..origin/master) থেকে কী পরিবর্তিত হয়েছিল তার চেয়ে আলাদা হয়ে যায় । তারপর আমি একীভূত origin/master

প্রাপ্ত কমিটগুলি একটি কোড পর্যালোচনা সরঞ্জামে চাপ দেওয়া হয়।

আমি সফল করে ধাক্কা চাই - এবং শুধুমাত্র তাদের - উৎপাদন শাখা, এবং তারপর অবশ্যই করতে origin/production

আমি কীভাবে এটি করতে পারি?

এছাড়াও, আমার কাছে 2 টি স্ক্রিপ্ট চলছে: origin/masterধাক্কাটি একটি থেকে পাওয়া যায় , একটি ডাটাবেসে বিশদ বিবরণ করে, এবং মার্জ করে এবং অন্যটি যা আমি বর্তমানে লিখছি যা সফল কমিটসটিকে ধাক্কা দিতে হবে।

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


'সফল কমিটস' বলতে কী বোঝ?
বিডনলান

যা পর্যালোচনা করা হয়েছে এবং সফল হিসাবে চিহ্নিত হয়েছে। এটি এখানে আসলে গুরুত্বপূর্ণ নয়, গুরুত্বপূর্ণটি হ'ল এমন কমিটগুলি রয়েছে যা আমি রাখতে চাই এবং অন্য একটি শাখায় ঠেকাতে চাই এবং অন্যরাও যা থেকে মুক্তি / উপেক্ষা করতে চাই।
সিলভাইন

উত্তর:


319

আপনি যে শব্দটি সন্ধান করছেন তা হ'ল 'চেরি বাছাই'। অর্থাৎ, একটি শাখার মাঝামাঝি থেকে একটি একক প্রতিশ্রুতি নিন এবং এটি অন্যটিতে যুক্ত করুন:

A-----B------C
 \
  \
   D

হয়ে যায়

A-----B------C
 \
  \
   D-----C'

এটি অবশ্যই গিট চেরি-পিক কমান্ড দিয়ে করা যেতে পারে।

এই প্রতিশ্রুতিযুক্ত সমস্যাটি হ'ল গিট সমস্ত ইতিহাস তাদের আগে অন্তর্ভুক্ত করার অঙ্গীকারকে বিবেচনা করে - এইভাবে, যদি আপনার মতো তিনটি কমিট থাকে:

A-----B-----C

এবং বি থেকে মুক্তি পাওয়ার চেষ্টা করুন, আপনাকে এর মতো সম্পূর্ণ নতুন প্রতিশ্রুতি তৈরি করতে হবে:

A-----------C'

যেখানে সি'র আলাদা আলাদা SHA-1 আইডি রয়েছে। তেমনিভাবে, চেরি একটি শাখা থেকে অন্য শাখায় প্রতিশ্রুতি বাছাইয়ে মূলত একটি প্যাচ তৈরি করা জড়িত, তারপরে এটি প্রয়োগ করা হয়, এভাবে ইতিহাসকে সেভাবে হারাতে হবে।

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

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

আপনি যদি প্যাচগুলির স্তরে জিনিসগুলির সাথে চুক্তি করার জন্য জোর দেন, আপনি ডার্কগুলি দেখতে চাইতে পারেন - এটি একটি সংগ্রহস্থলকে প্যাচগুলির একটি সেট হিসাবে বিবেচনা করে এবং এইভাবে চেরি পিকিং মৌলিক ক্রিয়ায় পরিণত হয়। তবে এটির নিজস্ব সমস্যা রয়েছে যেমন খুব ধীর হওয়া :)

সম্পাদনা: এছাড়াও, আমি নিশ্চিত নই যে আমি দুটি স্ক্রিপ্ট সম্পর্কে আপনার দ্বিতীয় প্রশ্নটি বুঝতে পেরেছি। হতে পারে আপনি এটিকে আরও বিশদে বিশদভাবে বর্ণনা করতে পারেন, সম্ভবত বিষয়গুলিকে বিভ্রান্ত হতে না দেওয়ার জন্য আলাদা প্রশ্ন হিসাবে?


আমার দ্বিতীয় প্রশ্ন সম্পর্কে, আমি কেবল এটি নিশ্চিত করতে চাই যে পরিবর্তনগুলি আনার প্রক্রিয়াগুলি (১ ম স্ক্রিপ্ট) এবং প্রদত্ত প্রতিশ্রুতি অন্য কোনও স্থানে (২ য় স্ক্রিপ্ট) ধাক্কা দিয়ে জাতিদের শর্ত না থাকা / সংঘাত বিহীন হয়ে কাজ করতে পারে, যখন বিভিন্ন শাখায় কাজ করে। কিন্তু শেষ পর্যন্ত আমি যে oesn't ব্যাপার অনুমান যেহেতু আমি এক মধ্যে 2 স্ক্রিপ্ট একত্রীকরণ যায়নি, তাই 2 স্ক্রিপ্ট একযোগে কাজ করে না :)
সিলভাঁ

10
"কমিট আইডিগুলির এই পরিবর্তনটি গিটারের
নেরেক

4
@ নরেক তাঁর সম্ভবত এর অর্থ হ'ল কমিট সি'র পরিবর্তনগুলি যখন কমিট সি তে একই পরিবর্তনগুলির সাথে সংঘর্ষ করবে তখন আপনি দ্বিতীয় শাখাটি মার্জ করবেন will এটি প্রতিশ্রুতিবদ্ধ সি এর পিছনে ইতিহাস হারাতে পরিণতি
বাইটফু

4
"এবং বি থেকে মুক্তি পাওয়ার চেষ্টা করুন" - আপনি কেন বি থেকে মুক্তি পাওয়ার চেষ্টা করছেন?
d512

4
@ ব্যবহারকারী 1334007, তার অর্থ এটি আগে এটিবিসি হত। এখন, আপনার সি এর চেরি বাছাইয়ের কারণে আপনার শাখাটি AD-C হয়, এতে আর 'বি' থাকে না।
অ্যান দি দ্যাজিলে

1

আমি বুঝতে পারি এটি একটি পুরানো প্রশ্ন, তবে এখানে রেফারেন্স করা হয়েছে: গিটে একটি নির্দিষ্ট প্রতিশ্রুতি কীভাবে মার্জ করা যায়

অতএব, একটি নতুন উত্তর: বৈশিষ্ট্য শাখা এবং টানুন অনুরোধগুলি ব্যবহার করুন।

এটি দেখতে কেমন, যেখানে এফএ বৈশিষ্ট্য A এর সাথে প্রতিশ্রুতিবদ্ধ এবং FB বৈশিষ্ট্য বিয়ের সাথে প্রতিশ্রুতিবদ্ধ:

            fA   fC (bad commit, don't merge)
           /  \ /
master ----A----B----C
                \  /
                 fB

পুল অনুরোধগুলি গিটহাবের কার্যকারিতার সাথে সম্পর্কিত, তবে সত্যিই আমি বলতে চাইছি কারও কারও কাছে বৈশিষ্ট্যযুক্ত শাখাগুলিকে মাস্টার হিসাবে মার্জ করার দায়িত্ব রয়েছে।

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