আপনি একীভূত। এটি আসলে বেশ সহজ এবং পুরোপুরি স্থানীয় অপারেশন:
git checkout b1
git merge master
# repeat for b2 and b3
এটি ইতিহাস যেমনটি ঘটেছিল ঠিক তেমনটিই ছেড়ে দেয়: আপনি মাস্টারকে সমর্থন করেছেন, আপনি সমস্ত শাখায় পরিবর্তন করেছেন এবং শেষ পর্যন্ত আপনি মাস্টার থেকে তিনটি শাখায় পরিবর্তনগুলি অন্তর্ভুক্ত করেছেন।
git
এই পরিস্থিতিটি সত্যিই খুব ভালভাবে পরিচালনা করতে পারে, এটি একই সাথে সমস্ত দিকগুলিতে সংহত হওয়ার জন্য তৈরি করা হয়েছে। আপনি বিশ্বাস করতে পারেন এটি সঠিকভাবে সমস্ত থ্রেড একসাথে পেতে সক্ষম হবে। এটি শাখা b1
মার্জ করে master
, বা master
মার্জ করে b1
, মার্জ কমিট সমস্ত গিটকে একই রকম দেখায় তা বিবেচনা করে না । পার্থক্যটি হ'ল, কোন শাখাটি এই মার্জ কমিটের দিকে ইশারা করে।
আপনি পুনর্বাসন। একটি এসভিএন, বা অনুরূপ পটভূমিযুক্ত ব্যক্তিরা এটিকে আরও স্বজ্ঞাগত বলে মনে করেন। কমান্ডগুলি মার্জ হওয়া ক্ষেত্রে অ্যানালগ করে:
git checkout b1
git rebase master
# repeat for b2 and b3
লোকেরা এই পদ্ধতির পছন্দ করে কারণ এটি সমস্ত শাখায় রৈখিক ইতিহাস ধরে রাখে। তবে, এই রৈখিক ইতিহাসটি মিথ্যা, এবং আপনার সচেতন হওয়া উচিত যে এটি is এই প্রতিশ্রুতিবদ্ধ গ্রাফটি বিবেচনা করুন:
A --- B --- C --- D <-- master
\
\-- E --- F --- G <-- b1
একত্রীকরণের ফলাফল সত্য ইতিহাসে:
A --- B --- C --- D <-- master
\ \
\-- E --- F --- G +-- H <-- b1
রিবেসটি আপনাকে এই ইতিহাস দেয়:
A --- B --- C --- D <-- master
\
\-- E' --- F' --- G' <-- b1
মুল বক্তব্যটি হ'ল প্রতিশ্রুতিবদ্ধ E'
, F'
এবং G'
সত্যই কখনও উপস্থিত ছিল না এবং সম্ভবত কখনও পরীক্ষাও করা হয়নি। তারা সংকলন নাও করতে পারে। রিবেসের মাধ্যমে অযৌক্তিক কমিট তৈরি করা আসলে বেশ সহজ, বিশেষত যখন পরিবর্তনগুলি master
উন্নয়নের জন্য গুরুত্বপূর্ণ b1
।
এই ফল হতে পারে, আপনি পার্থক্য করতে পারে না যা তিন করে এর E
, F
এবং G
আসলে একটি রিগ্রেশন পরিচয় মান কমা git bisect
।
আমি বলছি না যে আপনার ব্যবহার করা উচিত নয় git rebase
। এটির ব্যবহার রয়েছে। আপনি যখনই এটি ব্যবহার করেন তবে আপনার ইতিহাস সম্পর্কে মিথ্যা বলার বিষয়টি সম্পর্কে সচেতন হওয়া দরকার। এবং আপনার কমপক্ষে নতুন কমিট পরীক্ষা পরীক্ষা করা উচিত।