গিট সমস্ত পরিবর্তন বাতিল করে এবং প্রবাহ থেকে টানুন


144

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

উত্তর:


250

এখানে (কমপক্ষে) দুটি জিনিস আপনি করতে পারেন - আপনি রিমোট রেপো পুনরায় সংস্থান করতে পারেন, বা আপনি reset --hardসাধারণ পূর্বপুরুষের কাছে করতে পারেন এবং তারপরে একটি টানও করতে পারেন , যা দূরবর্তী মাস্টারের উপর সর্বশেষ প্রতিশ্রুতিতে দ্রুত এগিয়ে যাবে will

কংক্রিট হওয়ার জন্য, এখানে নিউভিক রেহেনেলের মূল উত্তরের একটি সাধারণ বর্ধন রয়েছে:

git reset --hard origin/master
git pull origin master

দ্রষ্টব্য : git reset --hardব্যবহারটি যেকোন অনুমতিবিহীন পরিবর্তনগুলি বাতিল করে দেবে, এবং আপনি যদি গিটে নতুন হন তবে এই আদেশটি দিয়ে নিজেকে বিভ্রান্ত করা সহজ হতে পারে, সুতরাং এগিয়ে যাওয়ার আগে এটি কী করতে চলেছে সে সম্পর্কে আপনার কোনও ধারণা আছে তা নিশ্চিত করুন।


1
ছদ্মবেশীদের জন্য আরও সহায়তা: বাইরে git gcথেকে কিছু গৃহকর্ম সংরক্ষণ করে runs অন্য একটি নোটে, আমি কখনও চালানো হয়নি git gc। এটি চালানো ভাল, কিন্তু প্রয়োজন হয় না।
জোশুয়া ডান্স

@ জোশুয়াড্যান্স - ভাল পয়েন্ট আমি নিশ্চিত নই যে কেন আমি মূলত এটি অন্তর্ভুক্ত করেছি।
এরিক ওয়াকার 20

23

শাখা মাস্টার থাকাকালীন: git reset --hard origin/master

তারপরে কিছু পরিষ্কার করুন git gc(ম্যান পৃষ্ঠাগুলিতে এটি সম্পর্কে আরও)

আপডেট: আপনার সম্ভবত একটিও করতে হবে git fetch origin(বা git fetch origin masterআপনি যদি কেবল সেই শাখাটি চান); আপনি রিসেটের আগে বা পরে এটি করেন কিনা তা বিবেচ্য নয়। (ধন্যবাদ @ এরিক-ওয়াকার)


1
আপনার পরে একটি টান প্রয়োজন হতে পারে reset --hard
এরিক ওয়াকার

রিসেটের আগে একবার গিট ফেচ অরিজিন চালানো হলে মাস্টারের কাছ থেকে টানা দরকার হয় না।
স্কিরিটাই

@ স্ক্রিটাই: আমার মন্তব্যটি উত্স থেকে আনার উল্লেখ করার আগে যুক্ত হয়েছিল।
এরিক ওয়াকার

19

আপনি এটি একটি একক আদেশে করতে পারেন:

git fetch --all && git reset --hard origin/master

অথবা এক জোড়া কমান্ডে:

git fetch --all
git reset --hard origin/master

আপনি আপনার সমস্ত স্থানীয় পরিবর্তন হারাবেন তার চেয়ে নোট


5
git reset <hash>  # you need to know the last good hash, so you can remove all your local commits

git fetch upstream
git checkout master
git merge upstream/master
git push origin master -f

ভয়েলা, এখন আপনার কাঁটাচামচটি প্রবাহের মতো ফিরে এসেছে।


0

আমি অবশেষে বুঝতে পেরেছি যে পরিবর্তে git fetch --all && git reset --hard origin/masterএটি হওয়া উচিত git fetch --all && git reset --hard origin/<branch_name>, পরিবর্তে (যদি কেউ একটি ভিন্ন শাখায় কাজ করে)

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