একটি নির্দিষ্ট প্রতিশ্রুতি পর্যন্ত মার্জ করুন


372

আমি গিটে শাখা newbranchথেকে একটি নতুন শাখা তৈরি করেছি master। এখন আমি কিছু কাজ করেছি এবং মার্জ newbranchকরতে চাই master; যাইহোক, আমি এতে কিছু অতিরিক্ত পরিবর্তন newbranchকরেছি এবং আমি newbranchচতুর্থ থেকে শেষ প্রতিশ্রুতিতে একত্রী হতে চাই master

আমি ব্যবহার করেছি cherry-pickতবে এটি সঠিক বিকল্পগুলি ব্যবহার করতে বার্তাটি দেখায়:

git checkout master    
git cherry-pick ^^^^HEAD newbranch

আমি mergeকি এর পরিবর্তে গিট ব্যবহার করতে পারি?

git merge newbranch <commitid>

উত্তর:


592

অবশ্যই, masterশাখায় থাকা আপনাকে যা করতে হবে তা হ'ল:

git merge <commit-id>

যেখানে আপনি নিজের শাখায় যেতে চান তা commit-idথেকে সর্বশেষ কমিটের হ্যাশ কোথায় ।newbranchmaster

আপনি কোনও গিট কমান্ড সম্পর্কে আরও জানতে পারেন git help <command>। এটা এই ক্ষেত্রে git help merge। এবং ডক্স বলছে যে mergeকমান্ডের জন্য সর্বশেষ যুক্তি হ'ল <commit>...তাই আপনি যে কোনও প্রতিশ্রুতি বা একাধিক কমিটের রেফারেন্সটি পাস করতে পারেন। যদিও, আমি পরে নিজেই করি নি।


30
শুধুমাত্র একটি একক প্রতিশ্রুতি নয় সমস্ত পূর্ববর্তী commit-id
কমিটগুলি

53
হ্যাঁ, এটা থেকে সব করে মার্জ করব newbranchসময় তার ইতিহাস থেকে চলেনি যেহেতু masterপর্যন্ত commit-idমধ্যে masterশাখা। আপনি git merge <commit-id>কিছু নামবিহীন শাখা মার্জ করার কথা ভাবতে পারেন যা commit-idআপনার বর্তমান শাখায় শেষ হয় ।
KL-7

2
আমি কি কমিট আইডি ব্যবহার করে মাস্টার ব্যতীত দুটি স্থানীয় শাখার মধ্যে মার্জ করতে পারি?
skt

1
@ এসসিটি, আপনি ব্যবহারের আগে মার্জ করতে চান সেই স্থানীয় শাখায় থাকতে পারেন git merge। অর্থাত্ আপনি 18a6fac শাখা বি 2 থেকে শাখা বি 1 তে মার্জ করতে চানgit checkout b1; git merge 18a6fac
XioRcaL

1
এটি কাজ করে না বলে মনে হচ্ছে, আমি যদি একটি শাখায় থাকি তবে আমি AB এবং C এর সাথে আরও কিছু শাখা সংহত করতে চাই এবং আমি সিটিতে মিশে যাই তবে এটি কেবল A এবং B নয়, সি-তে পরিবর্তিত হয়
ggb667

12

ব্রাঞ্চিং পরিষ্কার রাখতে, আপনি এটি করতে পারেন:

git checkout newbranch
git branch newbranch2
git reset --hard <commit Id> # the commit at which you want to merge
git checkout master
git merge newbranch
git checkout newbranch2

এইভাবে, নিউব্র্যাঞ্চ শেষ হবে যেখানে এটি মাস্টার হিসাবে একীভূত হয়েছিল এবং আপনি নিউব্রাঞ্চ 2 এ কাজ চালিয়ে যান।


1

এটি থেকে বর্তমান শাখায় মার্জ করার জন্য বর্তমান শাখা ফোল্ডারে নীচের কমান্ডটি চালান <commit-id>, --no-commitস্বয়ংক্রিয়ভাবে একটি নতুন অঙ্গীকার তৈরি করবেন না

git merge --no-commit <commit-id>

git merge --continue একত্রিত হওয়ার পরে কেবল দ্বন্দ্ব দেখা দিয়েছে।

git merge --abort বর্তমান বিরোধ নিষ্পত্তি প্রক্রিয়াটি বাতিল করুন এবং প্রাক-মার্জ রাষ্ট্রটি পুনর্গঠনের চেষ্টা করুন।

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