git - কিভাবে আরেকটি শাখা থেকে সম্পূর্ণভাবে গিট মাস্টার শাখা প্রতিস্থাপন?




merge git-branch (4)

সম্ভাব্য ডুপ্লিকেট:
বর্তমান গিট শাখা একটি মাস্টার শাখা করুন

আমার জিট রিপোজিটরিতে দুটি শাখা আছে:

  1. master
  2. seotweaks (মূলত master থেকে তৈরি)

আমি দ্রুত master মধ্যে ফিরে মার্জ অভিপ্রায় সঙ্গে seotweaks তৈরি। যাইহোক, যে তিন মাস আগে ছিল এবং এই শাখার কোডটি master চেয়ে 13 সংস্করণ আগে।

মাস্টারের সমস্ত কোড এখন কম বা অপ্রচলিত হওয়ার কারণে এটি কার্যকরভাবে আমাদের কাজের মাস্টার শাখা হয়ে উঠেছে।

খুব খারাপ অনুশীলন আমি জানি, পাঠ শিখেছি।

আপনি কি জানেন যে master শাখার সমস্ত সামগ্রীর জায়গায় আমি কীভাবে প্রতিস্থাপন করতে seotweaks ?

আমি শুধু master এবং মার্জ সবকিছু মুছে ফেলতে পারে, কিন্তু এই ভাল অনুশীলন মত মনে হয় না।


আপনি এই মত seotweaks সঙ্গে মাস্টার overwrite "আমাদের" মার্জ কৌশল ব্যবহার করতে সক্ষম হওয়া উচিত:

git checkout seotweaks
git merge -s ours master
git checkout master
git merge seotweaks

ফলাফল আপনার মাস্টার এখন essentially seotweaks হতে হবে।

( --strategy=ours জন্য --strategy=ours )

আমাদের 'কৌশল' সম্পর্কে ডক্স থেকে:

এটি কোনও সংখ্যার মাথা সংশোধন করে, তবে মার্জের ফলপ্রসূ গাছটি সর্বদা বর্তমান শাখার মাথার মতো, যা অন্যান্য সমস্ত শাখাগুলির সমস্ত পরিবর্তনকে কার্যকরভাবে উপেক্ষা করে। এটি সাইড শাখার পুরাতন উন্নয়ন ইতিহাসকে বাদ দেওয়ার জন্য ব্যবহার করা হয়। মনে রাখবেন যে এটি এক্সক্স বিকল্প থেকে পুনর্বিবেচনার মার্জ কৌশল থেকে ভিন্ন।


আপনি রিমোটের মাস্টারটি পুনঃনামকরণ / অপসারণ করতে পারেন তবে এটি একটি সমস্যা হবে যদি অনেক লোক রিমোট মাস্টার শাখায় তাদের কাজটি পরিচালনা করে এবং সেই স্থানীয় শাখাটিতে সে শাখাটি টেনে নেয়।
যেহেতু সবাই শাখা ' seotweaks ' কাজ করছে বলে মনে হচ্ছে যে এই ক্ষেত্রে হতে পারে না।

যে ক্ষেত্রে আপনি করতে পারেন:
গিট রিমোট - শো কাজ নাও হতে পারে। (আপনার স্থানীয় রিপোতে আপনার রিমোট কীভাবে ঘোষণা করা হয়েছে তা দেখতে একটি git remote show তৈরি করুন। আমি ' origin ' অনুমান করব)
( house9 , house9 মন্তব্যসমূহ: "আমাকে একটি অতিরিক্ত পদক্ষেপ করতে হয়েছিল, house9 এ ' Admin ' বোতামটিতে ক্লিক করুন এবং ' master ' ছাড়া অন্য কিছুতে ' Default Branch ' সেট করুন, তারপরে এটি পরে ফেরত দিন")

git branch -m master master-old  # rename master on local
git push origin :master          # delete master on remote
git push origin master-old       # create master-old on remote
git checkout -b master seotweaks # create a new local master on top of seotweaks
git push origin master           # create master on remote

কিন্তু আবার:

  • যদি অন্য ব্যবহারকারী রিমোটে মুছলে মাস্টার টেনে আনতে চেষ্টা করে, তবে তাদের টান ব্যর্থ হবে ("রিমোটে এমন কোনও রেফারেন্স নেই")
  • যখন মাস্টার রিমোটে পুনঃপ্রতিষ্ঠিত হয়, তখন একটি পুল তার স্থানীয় (এখন পুরাতন) মাস্টারে নতুন মাস্টারটি একত্রিত করার চেষ্টা করবে: অনেকগুলি দ্বন্দ্ব। তারা প্রকৃতপক্ষে reset --hard করতে হবে - তাদের স্থানীয় মাস্টারকে রিমোট / মাস্টার শাখাতে পাঠানো হবে যা তারা আনবে এবং তাদের বর্তমান মাস্টার সম্পর্কে ভুলে যাবে।

মাস্টার শাখাটির অন্য নামকরণের জন্য গিট শাখা-এম ব্যবহার সম্পর্কে কী বলা যায়? এটার মতো কিছু:

git branch -m master old-master
git branch -m seotweaks master
git push -f origin master

এই মূল মাস্টার মধ্যে commits মুছে ফেলতে পারে , git push -f origin master চালানোর আগে আপনার মূল মাস্টার চেক করুন।


যেহেতু seotweaks মূলত master থেকে একটি শাখা হিসাবে তৈরি করা হয়েছিল, এটি ফিরে মার্জ একটি ভাল ধারণা। তবে যদি আপনি এমন কোন পরিস্থিতিতে থাকেন যেখানে আপনার কোনও শাখা master থেকে বা আপনার ইতিহাসের শাখা সত্যিই ভিন্ন না হয় তবে আপনি কেবল সেই নতুন শাখার পক্ষে master শাখাকে বাদ দিতে চান যা আপনি আপনার কাজ করছেন এটা করতে পারেন:

git push [-f] origin seotweaks:master

আপনি যদি এই ত্রুটিটি পান তবে এটি বিশেষভাবে সহায়ক:

! [remote rejected] master (deletion of the current branch prohibited)

এবং আপনি GitHub ব্যবহার করছেন না এবং আপনার রিমোট রিপোজিটরিটির জন্য ডিফল্ট শাখা পরিবর্তন করার জন্য "প্রশাসনের" ট্যাবে অ্যাক্সেস নেই। উপরন্তু, এটি মাস্টার বা মুছে ফেলার দ্বারা আপনি সম্মুখীন হতে পারে সময় বা জাতি শর্ত হ্রাস করবে না:

git push origin :master





git-branch