অন্য বৈশিষ্ট্য শাখায় পুনরায় বৈশিষ্ট্যযুক্ত শাখা


304

আমার দুটি (বেসরকারী) ফিচার শাখা রয়েছে যেগুলিতে আমি কাজ করছি।

a -- b -- c                  <-- Master
     \     \
      \     d -- e           <-- Branch1
       \
        f -- g               <-- Branch2

এই শাখাগুলিতে কিছুক্ষণ কাজ করার পরে আমি আবিষ্কার করেছি যে আমার ব্রাঞ্চ 1-এর শাখা 2 থেকে পরিবর্তনগুলি দরকার। আমি ব্রাঞ্চ 2-এ পরিবর্তনগুলি ব্রাঞ্চ 1 তে পুনরায় চালু করতে চাই। আমি নিম্নলিখিতটি দিয়ে শেষ করতে চাই:

a -- b -- c                  <-- Master
           \
            d -- e -- f -- g <-- Branch1

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

এই আদেশটি কি কাঙ্ক্ষিত ফলাফল আনবে?

(Branch1)$ git rebase --onto Branch1 Branch2

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

3
ধন্যবাদ। আমি প্রথমবার এই অধিকারটি পাওয়ার জন্য এতটা বাঁকা ছিলাম যে আমার কাছে এমনটি ঘটেনি যে আমি নিজেই এটি সহজেই পরীক্ষা করতে পারি :-)
আরজেন

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

নোট: গীত 2.0 রি-বেসের ফলে এই ধরনের জন্য একটি শর্টকাট পরিচয় করিয়ে দিতে হবে: git rebase -। দেখতে নীচের আমার উত্তর
VonC

5
গৌণ নোট: এখানে উত্তরগুলি ফলাফল হিসাবে শাখা 2 দেয়। ওপি শাখা 1 চেয়েছিল। নাকি আমি কিছু মিস করেছি?
জোসেফ.বি

উত্তর:


352
  1. শাখা 2 এ স্যুইচ করুন

    git checkout Branch2
    
  2. শাখা 2 এ থাকা, শাখা 1 পরিবর্তনগুলির শীর্ষে বর্তমান (শাখা 2) পরিবর্তনগুলি প্রয়োগ করুন:

    git rebase Branch1
    

যা আপনাকে শাখা 2 এ কাঙ্ক্ষিত ফলাফল দিয়ে ছেড়ে দেবে:

a -- b -- c                      <-- Master
           \
            d -- e               <-- Branch1
           \
            d -- e -- f' -- g'   <-- Branch2

আপনি শাখা 1 মুছতে পারেন।


ধন্যবাদ! রিবেসিংয়ের পরে শাখাটি মোছার সময় আমি একটি বার্তা পাই যে শাখাটি পুরোপুরি একত্রিত হয়নি। আমি ধরে নিই আমি নিরাপদে এই বার্তাটি উপেক্ষা করতে এবং মুছতে বাধ্য করতে পারি?
আরজেন

10
তিনি কি ব্রাঞ্চ 1 এ সমস্ত পরিবর্তন করতে চান না?
tomasz_kusmierczyk

6
এই যে তিনি চেয়েছিলেন তার বিপরীত মত মনে হচ্ছে, না?
1252748

1
প্রকৃতপক্ষে, @ টমাস_কুসিমিরজাইক এবং @ 1252748 এবং আমি নিজেও বিভ্রান্ত হয়েছি। তবে আমি বুঝতে পেরেছিলাম যে git rebaseব্রাঞ্চ 1 এ থাকার সময় সম্পাদন করা শাখা 1 থেকে আবার লিখিত থাকবে যা শাখা 2 থেকে অনুলিপি করা হয়েছে তাদের শীর্ষগুলিতে পরিবর্তন করা হবে। এটি নিম্নলিখিত প্রতিশ্রুতিবদ্ধ আদেশের ফলাফল করবে a - b - f - g - c' - d' - e',।
ইয়েল ghEEz

1
@ টমাস_কুসিমিরজাইক এবং 1252748, তিনি যা চান তার বিপরীত নয়, এটি তিনি যা চেয়েছিলেন তা ঠিক এটি। শাখার নামগুলি কোনও ব্যাপার নয়, আপনি সর্বদা সেগুলি পরিবর্তন করতে পারেন।
a3y3

55

দ্রষ্টব্য: আপনি যদি চালু থাকেন তবে আপনি Branch1গিট 2.0 (Q2 2014) দিয়ে টাইপ করতে সক্ষম হবেন:

git checkout Branch2
git rebase -

ব্রায়ান গেসিয়াক দ্বারা প্রতিশ্রুতিবদ্ধ 4f40740 দেখুন :modocache

rebase: -পূর্ববর্তী শাখার জন্য " " স্বল্প হাতের অনুমতি দিন

শর্টহ্যান্ডকে একইভাবে পুনর্বাসিত শেখান checkoutএবং বর্তমান শাখায় mergeশাখার নামকরণ করতে rebase; অর্থাৎ, " -" এর অর্থ "আমরা যে শাখায় আগে ছিলাম"


26
সুন্দর, তবে কিছুটা বিপজ্জনকও। কখনও কখনও শব্দচোষিত জয়। তবে আবার, আমি
জাভাও

3

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

a -- b -- c                  <-- Master
     \     \
      \     d -- e -- f -- g <-- Branch1 (Cherry-Pick f & g)
       \
        f -- g               <-- Branch2
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.