একত্রিত হওয়া পরিবর্তনের শীর্ষে আপনি কীভাবে বর্তমান শাখার পরিবর্তনগুলি পুনর্বার করবেন?


144

ঠিক আছে. যদি আমি একটি শাখায় থাকি (বলুন working), এবং আমি অন্য একটি শাখা থেকে পরিবর্তনগুলিতে মার্জ করতে চাই (বলুন master), তবে আমি শাখায় git-merge masterথাকাকালীন কমান্ডটি চালাচ্ছি working, এবং পরিবর্তনগুলি ইতিহাসকে কিছুটা ছাড় না দিয়ে মার্জ হয়ে যায়। আমি যদি চালনা করি git-rebase masterতবে পরিবর্তনগুলি masterআমার workingশাখার শীর্ষে রাখতে পুনর্বহাল করা হবে । তবে আমি যদি পরিবর্তনগুলিতে মার্জ করতে চাই masterতবে আমার পরিবর্তনগুলি workingপুনরায় চালু করতে চাই তবে শীর্ষস্থানীয় হতে পারে? আমি কেমন করে ঐটি করি? এটা করা যায়?

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

উত্তর:


255

rebaseপেছনের দিকে যা আছে তা তুমি পেয়েছিলে । git rebase masterআপনি যা জিজ্ঞাসা করছেন তা করে - বর্তমান শাখায় পরিবর্তনগুলি নেয় (যেহেতু এটি মাস্টারের কাছ থেকে বিচ্যুত হয়েছিল) এবং তাদের উপরে আবার চাপায় master, তারপরে বর্তমান শাখার প্রধানকে নতুন ইতিহাসের প্রধান হিসাবে সেট করে। এটি বর্তমান শাখার উপরে থেকে পরিবর্তনগুলি পুনরায় প্লে করে নাmaster ।


3
@ জোনাথন এটি দুর্দান্ত এটি একটি কৌতূহলপূর্ণ বিষয়। যাইহোক, শাখার শীর্ষে থাকার জন্য ( ব্রাঞ্চ বন্ধ হওয়ার পরে) এর পরিবর্তনগুলি git rebase workingস্থানান্তরিত করতে পারে - তবে এটি করার মতো খুব বুদ্ধিমান জিনিস নয় :)masterworkingworkingmaster
— hobbs

66

এটি দেখার আরেকটি উপায় হ'ল বিবেচনা git rebase masterকরা:

উপরের বর্তমান শাখাটি রিবেস করুন master

এখানে ' master' হ'ল উজানের শাখা, এবং এটি ব্যাখ্যা করে যে কেন একটি রিবেসের সময়, oursএবং theirsবিপরীত হয় ।


এটিও ব্যাখ্যা করে যে কেন স্থানীয় এবং REMOTE বিপরীত হয়। ধন্যবাদ।
— এভিআইডিপ্লোপার

স্থানীয় এবং দূরবর্তী @AVIDeveloper, এছাড়াও আপনি পড়তে পারেন stackoverflow.com/a/3052118/6309
— VonC

5
@@ ভোনসি: ধন্যবাদ। হ্যাঁ, দুপুরে নিজের কাছে বিড়বিড় করার পরে "রিমোটটি আমার শাখা .. স্থানীয় আমার নয়", এটি সমস্তই ডুবে গেছে Hon সত্য, আমি রিমোট / লোকাল / এর পরিবর্তে শাখার নামগুলি (বা সংক্ষেপে SHA) দেখতে পছন্দ করতাম / আমাদিগের / তাহাদেরই / খনি। git difftoolভয়াবহ বাম / ডান সম্পর্কে আমার চিন্তাভাবনা একই । বিষয়টা আলাদা নয়, তবে difftoolআমি গিট-মেল্ডে লেগে থাকি এবং 'ওয়ার্কিং-দির', 'স্ট্যাশ @ {0}' এর মতো নাম উপভোগ করি।
— এভিআইডিপ্লোয়ার

1
@ ভনসি: আপনি কীভাবে ব্যাখ্যা করতে পারেন যে এটি করার পরে আমরা কীভাবে করতে পারি: git checkout branch_to_update git rebase masterআমি স্থানীয় শাখার শীর্ষে মাস্টারের কমিটের পরিবর্তে উল্টে যাই?
— জাভা 14

1
@ জাভাসা অবাক করা, যদি না রিবেসটি সঠিকভাবে শেষ না করা হয়? এতে আরও বিশদ সহ আপনার একটি পৃথক প্রশ্ন জিজ্ঞাসার প্রয়োজন হতে পারে।
— ভনসি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.