আমি কীভাবে 'মাস্টার' কে 'উত্স / মাস্টার' এ পুনরায় সেট করব?


215

আমি কি আরও সহজ উপায়ে নিম্নলিখিতগুলি করতে পারি?

git checkout origin/master
git branch -D master
git branch master
git checkout master

কখনও কখনও, কার্যক্ষম গাছটিকে স্পর্শ না করেই এটি করা যায়: stackoverflow.com/a/12343727/586086
অ্যান্ড্রু মাও

6
দয়া করে আপনার গৃহীত উত্তরটি আপডেট করুন: @ KindDragon এর উত্তর সংশোধনকারী এবং খাটো।
রবার্ট সিমার

উত্তর:


309

KindDragon এর উত্তরে যেমন উল্লেখ করা হয়েছে, আপনি masterসরাসরি এখান থেকে পুনরায় তৈরি করতে পারবেন origin/master:

git checkout -B master origin/master

git checkoutMan পৃষ্ঠা উল্লেখ:

যদি -Bদেওয়া হয়, <new_branch>এটি তৈরি না হলে তৈরি করা হয়; অন্যথায়, এটি পুনরায় সেট করা হয়েছে । এটি লেনদেনের সমতুল্য

$ git branch -f <branch> [<start point>]
$ git checkout <branch>

মূলত প্রস্তাবিত:

কিছুটা এইরকম:

$ git checkout master

# remember where the master was referencing to
$ git branch previous_master

# Reset master back to origin/master
$ git reset --hard origin/master

পদক্ষেপ 2 beingচ্ছিক সঙ্গে।


1
আপনি এক লাইন দিয়ে এটি করতে পারেন।
রবার্ট সিমার

93

গিট এই আদেশটি সমর্থন করে:

git checkout -B master origin/master

পরীক্ষা করে দেখুন origin/masterশাখা এবং তারপর রিসেট masterশাখা আছে।


4
একমাত্র সত্য উত্তর।
রবার্ট সিমার

3
চারটি কীস্ট্রোক সংরক্ষণ করুন - আপনার উদ্ধৃতিগুলির দরকার নেই। জাস্ট: গিট চেকআউট-বি মাস্টার উত্স / মাস্টার
জুমালিফাইগার্ড

আসুন আমি বলি যে আমি দুটি জিনিস নিয়েছি, প্রথমটি হ'ল শাখার সাথে একত্রীকরণ এবং দ্বিতীয়টি নিয়মিত। আমি যদি উত্স / মাস্টারে ফিরে যাই তবে মার্জটির কী হবে?
utdev

1
তুমি করতে হবে git fetch origin masterআগে নিশ্চিত হতে origin/masterআপডেট করা হয়?
পেডরোজথ

হ্যাঁ, অবশ্যই সমস্ত সমাধান সহ আপনার git fetchপ্রথমে করা উচিত
KindDragon

29

আমি মনে করি এমনকি ভনসির উত্তরও এই বিকল্পের তুলনায় জটিলতা রয়েছে:

git update-ref refs/heads/master origin/master
git reset --hard master

গিট স্বয়ংক্রিয়ভাবে একটি রেফার প্রতিটি মান লগ ইন করে (রিফ্লগের মাধ্যমে)। সুতরাং আপনি যে কমান্ড চালানোর পরে, তারপরে master@{1}মাস্টার আগের মান বোঝায়।

ভনসির উত্তরটি সঠিক, তবে এটি ফাইল সিস্টেমে মাস্টারটির পুরানো মানটি পরীক্ষা করে সময় নষ্ট করে।

আপনি যদি রেপোতে অনাথ জিনিসগুলির বিষয়ে যত্নশীল হন তবে আপনি চালাতে পারেন git gc


1
একটি আকর্ষণীয় বিকল্প মনে হচ্ছে। +1
ভনসি

আমি এখনও পেতেAlready on 'master'
yourfriendzak

@ ইয়োরফ্রেন্ডজাক, আমি বিবেচনায় নেওয়ার কথা ভুলে গিয়েছিলাম যে মাস্টার আপডেট করার আগে আপনার কাছে ইতিমধ্যে মাস্টার চেক আউট থাকতে পারে। আমি উত্তর হতে আপডেট করেছি যা সেই ক্ষেত্রে এমনকি কার্যকর হওয়া উচিত।
আলেকজান্ডার বার্ড

আপনি মাস্টার না থাকলেও এটি কাজ করে (একটি বিচ্ছিন্ন হেড স্টেটের মতো যা আসলে টিপস উত্স / মাস্টারকে নির্দেশ করে)। তারপরে, আপনি রেপোর মাধ্যমে পুরানো ফাইলগুলি ফ্লিপ না করেই মাস্টার চেকআউট করতে পারেন। গ্রেট!
অ্যান্ড্রু মাও

20

আপনি যদি ইতিমধ্যে থাকেন তবে আপনি masterনিম্নলিখিতটি করতে পারেন:

git reset --hard origin/master

এটি স্থানীয় masterশাখাটি দূরবর্তীটিতে নির্দেশ করবে origin/masterএবং কার্যকরী ডিয়ারের কোনও পরিবর্তন বাতিল করবে।


এবং ফাইল মুছে ফেলবে! আপনি যদি ফাইল তৈরি / সম্পাদিত করেন এবং তাদের উপর একটি "গিট অ্যাড" চালিয়ে থাকেন তবে এই আদেশটি তাদের মুছে ফেলবে। সতর্ক করা হবে.
চিজো

এই পদ্ধতির চেয়ে ভাল git checkout -B master origin/master?
জিম আহো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.