কীভাবে গিটহাব / বিটবকেটে মার্জ-কমিট নরক এড়ানো যায়


101

আমরা আমাদের রেপোতে প্রচুর কমিটমেন্ট দিয়ে শেষ করছি:

Merge branch 'master' of bitbucket.org:user/repo

প্রতিবার যখন কোনও বিকাশকারী তার / তার স্থানীয় কাঁটাচামচটি শীর্ষ-স্তরের রেপোতে সিঙ্ক করে তখনই এটি ঘটে।

সমস্ত রেপো লগকে ছড়িয়ে দেওয়া থেকে এই মার্জ-কমিট জাহান্নাম এড়াতে কি যাইহোক আছে? কোনও উপায়ে টান-অনুরোধ শুরু করার সময় কেউ কী এগুলি এড়াতে পারবেন?

আমি জানি আমি যদি গিট রিবেস করতে পারি তবে এটি যদি আমার স্থানীয় ভিএম-তে করা হয় তবে গিটহাব / বিটবকেট ইউআই-তে কোনও সমতা আছে কি?

কিভাবে আপনাকে বলছি এটা করবেন?

উত্তর:


137

মার্জ হওয়ার আগে ফিচার শাখাগুলি রিবেস করুন

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

git checkout master
git checkout -b feature/foo

# make some commits

git rebase master
git checkout master
git merge --ff-only feature/foo

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

--ff-onlyপতাকা ব্যবহার করুন

রিবাইজিং বাদে, --ff-onlyপতাকাটির ব্যবহার কেবলমাত্র দ্রুত-অগ্রগতির কমিটের অনুমতি দেয় তা নিশ্চিত করবে। এটি পরিবর্তে মার্জ কমিট হলে কোনও কমিট করা হবে না। গিট-মার্জ (1) ম্যানুয়াল পৃষ্ঠাতে বলা হয়েছে:

- কেবলমাত্র

একত্রে-শূন্য স্থিতির সাথে একত্রীকরণ এবং প্রস্থান করতে অস্বীকার করুন যদি না বর্তমানের হেড ইতিমধ্যে আপ টু ডেট থাকে বা একত্রীকরণটিকে দ্রুত-অগ্রবর্তী হিসাবে সমাধান করা না যায়।


4
এটি একটি দুর্দান্ত উত্তর। আমি যতবার সম্ভব রিবেস ব্যবহার করি। যদিও আমি কেবলমাত্র - অফ-ফ্ল্যাগ সম্পর্কে জানতাম না। বেশ দারুন!
লিও কোরিয়া

4
রিবেস এবং --F- কেবলমাত্র পরামর্শের জন্য ধন্যবাদ। তবে, যেমন আমার প্রশ্নে বলা হয়েছে, আমি কীভাবে গিটহাব / বিটবকেটের ইউআইয়ের মধ্যে এটি করতে পারি?
নিক্লাস

4
@ নিক্লাস আমি নিশ্চিত যে আপনার পছন্দসই কাজটি করার জন্য আপনাকে সিএলআইয়ের অবলম্বন করতে হবে। গিটহাব গিটের সম্পূর্ণ ক্ষমতা প্রকাশ করে না; এর বৈশিষ্ট্যগুলির একটি মাত্র একটি উপসেট প্লাস কিছু গ্রাফিকাল এবং সামাজিক নেটওয়ার্কিং মান-অ্যাডস। শুভকামনা!
টড এ জ্যাকবস

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

19
@ কোডডনোম এটিকে সিএলআই-তে "রিসর্টিং" বলবেন না ... বাস্তবে আপনার ইউআই-তে "রিসর্টিং" সম্পর্কে সতর্ক হওয়া উচিত!
দ্রোগানস

10

"টড এ জ্যাকবস" ইতিমধ্যে উল্লিখিত "রিবেস" এখানে ধারণা। এটি জিনিসগুলি করার আরও একটি বিশদ উপায়।

ধরা যাক আপনি মাস্টার শাখায় আছেন

$ git branch
  * master

আপনি একটি সংশোধন করতে চান, সুতরাং মাস্টার থেকে ব্রাঞ্চ করা একটি "ফিক্সব্র্যাঞ্চ" তৈরি করুন

$ git checkout -b fixbranch

হতে পারে আপনি এই শাখায় কয়েক দিন কাজ করেছিলেন এবং কয়েকটা কমিট করেছিলেন।

যেদিন আপনি আপনার প্রতিশ্রুতিগুলি কেন্দ্রীয় মাস্টার রেপোতে ঠেলাতে চেয়েছিলেন! চেকআউট মাস্টার এবং কেন্দ্রীয় মাস্টার রেপো থেকে সর্বশেষ পরিবর্তনগুলি পান

$ git checkout master
$ git pull origin master

আপনার ফিক্সব্র্যাঞ্চকে মাস্টারের সাথে পুনরায় স্থির করুন একটি পরিষ্কার ইতিহাস রয়েছে এবং স্থানীয় রেপোতে কোনও বিরোধ থাকলে তার সমাধান করুন।

$ git checkout fixbranch
$ git rebase master

এখন ফিক্সব্র্যাঞ্চ কেন্দ্রীয় মাস্টারের সাথে আপডোডেট রয়েছে, আমাকে ফিক্সবাংকে মাস্টার শাখায় একীভূত করতে দিন

 $ git checkout master
 $ git merge fixbranch

আমি শেষ! আমাকে স্থানীয় মাস্টারকে কেন্দ্রীয় মাস্টারের দিকে ঠেলে দাও

$ git push origin master

https://git-scm.com/book/en/v2/Git-Branching- রিবেসিং

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