একটি কাঁটাচামচ পরিষ্কার করুন এবং এটি উজান থেকে পুনরায় চালু করুন


395

আমি একটি ভাণ্ডার তৈরি করেছি, তারপরে আমি কিছু পরিবর্তন করেছি এবং দেখে মনে হচ্ছে আমি সমস্ত কিছু গণ্ডগোল করে ফেলেছি।

আমি আমার স্ক্র্যাচ থেকে আবার এটি শুরু করতে চাই, বর্তমান আপস্ট्रीम / মাস্টারটিকে আমার কাজের ভিত্তি হিসাবে ব্যবহার করে।
আমি কি আমার সংগ্রহস্থলটি পুনরায় চালু করব বা এটিকে একেবারেই মুছব?


4
একটি সাধারণ প্রশ্নের খুব জটিল উত্তর। কেবল সমস্ত কিছু মুছুন এবং পুনরায় সংগ্রহস্থলটি ক্লোন করুন।
ইয়াজা

1
@ ইয়াজা, না, এটি কিছু পরিস্থিতিতে আপনাকে আরও বেশি ঝামেলার সৃষ্টি করতে পারে।
শিমি ওয়েটজ্যান্ডলার 20

@ শিমি, আপনি যদি ওপির অনুরোধ থেকে শুরু করে আবার শুরু করতে চান না not
ইয়াজা

উত্তর:


795

এর সহজ সমাধানটি হ'ল (' upstream' রিমোট নামটি মূল রেপো ফোরকড হিসাবে উল্লেখ করে):

git remote add upstream /url/to/original/repo
git fetch upstream
git checkout master
git reset --hard upstream/master  
git push origin master --force 

(এই গিটহাব পৃষ্ঠার অনুরূপ , বিভাগ "খারাপ অবস্থার মধ্যে থাকলে আমি কী করব?" )

সচেতন হন যে আপনি masterশাখায় করা পরিবর্তনগুলি হারাতে পারেন (উভয় স্থানীয়ভাবে, এর কারণে reset --hardএবং দূরবর্তী দিকে, কারণ push --force)।

বিকল্পটি হ'ল, যদি আপনি নিজের প্রতিশ্রুতিগুলি masterবর্তমানের উপরের দিকে রক্ষা করতে চান তবে এটি সংরক্ষণ করতে চান upstream/master
রিসেট অংশটি একটি দ্বারা প্রতিস্থাপন করুন git rebase upstream/master। তারপরে আপনাকে এখনও জোর করে চাপ দিতে হবে।
এছাড়াও দেখুন " আমি খারাপ পরিস্থিতিতে থাকলে আমার কি করা উচিত? "


আরও একটি সম্পূর্ণ সমাধান, আপনার বর্তমান কাজের ব্যাক আপ করা (কেবলমাত্র ক্ষেত্রে ক্ষেত্রে) " ক্লিনআপ গিট মাস্টার শাখা এবং কিছু প্রতিশ্রুতিবদ্ধ করে নতুন শাখায় স্থানান্তরিত করা " তে বিশদ দেওয়া আছে।

" " কী তা বোঝানোর জন্য " কাঁটাচামচা গিটহাবের সংগ্রহস্থলের জন্য মূল গিটহাব সংগ্রহস্থল থেকে নতুন আপডেট টানুন " দেখুন upstream

উজানে


দ্রষ্টব্য: সাম্প্রতিক গিটহাব রেপো শাখার বিরুদ্ধে রক্ষা করেmasterpush --force
সুতরাং আপনাকে masterপ্রথমে আন-রক্ষা করতে হবে (নীচের চিত্রটি দেখুন) এবং তারপরে জোর-চাপ দেওয়ার পরে এটি পুনরায় সুরক্ষিত করতে হবে

এখানে চিত্র বর্ণনা লিখুন


দ্রষ্টব্য: গিটহাবের বিশেষত, উপরের দিকে একত্রীকরণের জন্য টানা অনুরোধগুলির জন্য কাঁটাচালিত রেপোগুলি মুছতে এখন (ফেব্রুয়ারী 2019) একটি শর্টকাট রয়েছে।


4
হাই, এটি দুর্দান্ত কাজ করেছে! BTW সঠিক রিসেট সিনট্যাক্স হলgit reset --hard upstream/master
tampe125

1
@ tampe125 দুর্দান্ত। আমি git resetউত্তরের বাক্য গঠন স্থির করেছি ।
ভনসি

মারাত্মক: 'upstream' গিট রিপোজিটরি হিসাবে উপস্থিত হবে না
বেনুবার্ড

@Benubird দূরবর্তী মূল রেপো (এক আপনি forked) উল্লেখ নাম যে: গ্রাফ এবং "দেখুন git remote" এ কমান্ড stackoverflow.com/a/3903835/6309
ভনসি

ঠিক আছে, তবে এটি কীভাবে সেট আপ করবেন তা আপনার প্রশ্ন থেকে স্পষ্ট নয়, ডিফল্টরূপে 'আপস্ট্রিম' কমান্ড লাইনে সংজ্ঞায়িত করা হয়নি যেহেতু আমি গিথুব দিয়ে লিখেছি ked
বেনুবার্ড

31

ভনসির উত্তর ভালোবাসি। নতুনদের জন্য এটির একটি সহজ সংস্করণ এখানে।

একটি গিট রিমোট রয়েছে originযা আমি নিশ্চিত যে আপনি সকলেই অবগত। মূলত, আপনি যতটা চান গিট রেপোতে রিমোট যোগ করতে পারেন। সুতরাং, আমরা কী করতে পারি তা একটি নতুন রিমোটকে প্রবর্তন করে যা মূল রেপোটি কাঁটাচামচ নয়। আমি এটি কল করতে চানoriginal

আসুন রিমোট হিসাবে কাঁটাচামচায় মূল রেপো যুক্ত করি।

git remote add original https://git-repo/original/original.git

এখন আসুন আমাদের কাছে সর্বশেষ কোডড রয়েছে তা নিশ্চিত করার জন্য আসল রেপো আনুন

git fetch original

যেমনটি, ভনসি পরামর্শ দিয়েছেন, নিশ্চিত করুন যে আমরা মাস্টারের উপরে আছি।

git checkout master

আসল রেপোতে সর্বশেষতম কোডটি সহ দ্রুত গতিতে আমাদের কাঁটাচামচ আনার জন্য, আমাদের কেবলমাত্র মূল রিমোট অনুসারে আমাদের মাস্টার শাখাটি পুনরায় সেট করতে হবে reset

git reset --hard original/master

এবং আপনি সম্পন্ন করেছেন :)


2
আমি fatal: ambiguous argument 'original/master': unknown revision or path not in the working tree.চূড়ান্ত পদক্ষেপে উঠছি । কোন পরামর্শ?
টমনারওয়ে

এটি প্রদর্শিত হয় যে এটি আপনাকে মূল রিমোট শাখায় স্টক দেয়। আমি ধরে নিচ্ছি যে এটি আপনার কাঁটাচামুটি সঠিক রিমোটে পুনরায় সেট করতে একটি পদক্ষেপ মিস করছে?
রায় সয়েলজার

1
originalস্থানীয় "আপস্ট্রিম" এর upstreamমতো (গিথুব ডক্স ব্যবহার করে) এর চেয়ে ভাল । অস্পষ্টতা হ্রাস করে। আমি ভাবছি যদি আপনি কেন এটি ব্যবহার করেন? origin/mastermaster
ভান

1
ঠিক এ কারণেই আমি এটি ব্যবহার করি!
আহমদ আওইস

2
আমি এই নির্দেশাবলী অনুসরণ করেছি এবং এখন গিট স্ট্যাটাস বলছে: শাখা মাস্টারে আপনার শাখা এবং 'উত্স / মাস্টার' আলাদা হয়েছে এবং যথাক্রমে ৫২ এবং ৫ টি পৃথক কমিট করেছে। (রিমোট শাখাটি আপনার মধ্যে মার্জ করার জন্য "গিট টান" ব্যবহার করুন) - তবে আমি আমার 5 টি কমিট বাতিল করতে চাই। পরবর্তী পদক্ষেপ কি?
ব্যবহারকারী 3562927

6

অনুসরণ করুন আপনার গিটহাব কোম্পানির নীতি মাস্টারকে 'জোর ধাক্কা' না দেওয়ার অনুমতি দিতে পারে।

remote: error: GH003: Sorry, force-pushing to master is not allowed.

আপনি যদি এর মতো কোনও ত্রুটি বার্তা পান তবে নীচের পদক্ষেপগুলি ব্যবহার করে দেখুন।

কার্যকরভাবে আপনার কাঁটাচামচ পুনরায় সেট করতে আপনার এই পদক্ষেপগুলি অনুসরণ করতে হবে:

git checkout master
git reset --hard upstream/master
git checkout -b tmp_master
git push origin

আপনার সেটিংসটি "সেটিংস -> শাখা -> ডিফল্ট শাখা" তে গিটহাবের উপর খুলুন, নতুন ডিফল্ট শাখা হিসাবে 'new_master' বেছে নিন। এখন আপনি 'মাস্টার' শাখায় চাপ দিতে পারেন:

git checkout master
git push --force origin

তারপরে আপনাকে গিটহাব সেটিংসে ডিফল্ট শাখা হিসাবে 'মাস্টার' ফিরিয়ে আনতে হবে। 'Tmp_master' মুছতে:

git push origin --delete tmp_master
git branch -D tmp_master

আপনার পরিবর্তন হ্রাস সম্পর্কে সতর্কতাযুক্ত অন্যান্য উত্তরগুলি এখনও প্রয়োগ হয়, যত্নশীল হন।


4

সোর্সট্রি জিইআইয়ের মাধ্যমে এটি কীভাবে 100% করবেন

(গিট কমান্ড লাইন ইন্টারফেসের মাধ্যমে সবাই কাজ করা পছন্দ করে না)

এটি একবার সেট আপ হয়ে গেলে, আপনার তখন থেকে 7-13 ধাপগুলি করা দরকার।

আনুন> চেকআউট মাস্টার শাখা> তাদের মাস্টারে পুনরায় সেট করুন> সার্ভারে পরিবর্তনগুলি ধাক্কা

ধাপ

  1. স্ক্রিনের শীর্ষে মেনু সরঞ্জামদণ্ডে: "সংগ্রহস্থল"> "সংগ্রহস্থল সেটিংস"

শীর্ষস্থানীয় মেনু বারে "রিপোজিটরি" হাইলাইট করা হয়েছে

  1. "যোগ করুন"

কথোপকথনের নীচে "যুক্ত করুন" বোতামটি

  1. গিটহাবে ফিরে যান এবং ক্লোন URL টি অনুলিপি করুন।

গিট ইউআরএল অনুসরণ করে গিথুব ওয়েবসাইটে "ক্লোন বা ডাউনলোড করুন" বোতামটি

  1. "ইউআরএল / পাথ" ক্ষেত্রে url আটকান তারপরে একে এমন একটি নাম দিন যা অর্থবোধ করে। আমি এটাকে "মাস্টার" বলেছি। "ডিফল্ট দূরবর্তী" চেকবক্সটি চেক করবেন না । আপনি সরাসরি এই সংগ্রহস্থলটিতে চাপ দিতে সক্ষম হবেন না।

"রিমোট নাম" এবং "ইউআরএল / পথ" ক্ষেত্রগুলি "দূরবর্তী বিবরণ" কথোপকথনে হাইলাইট করা হয়েছে

  1. "ওকে" টিপুন এবং আপনার এখন এটি সংগ্রহস্থলের তালিকায় উপস্থিত হওয়া উচিত।

"রিপোজিটরি সেটিংস" ডায়ালগটিতে "মাস্টার" সংগ্রহস্থলগুলি সংগ্রহস্থলের তালিকায় যুক্ত হয়েছে

  1. আবার "ওকে" টিপুন এবং আপনার "রিমোটস" এর তালিকায় এটি প্রদর্শিত হওয়া উচিত।

পাশের বারে রিমোটেস তালিকায় "মাস্টার" সংগ্রহস্থলটি হাইলাইট করা হয়েছে

  1. "আনুন" বোতামটি ক্লিক করুন (উত্স গাছের শিরোনামের উপরের বামে)

শিরোনাম অঞ্চলে "আনুন" বোতাম

  1. "সমস্ত রিমোট থেকে আনুন" চেকবক্সটি চেক করা আছে কিনা তা নিশ্চিত করুন এবং "ওকে" টিপুন

"আনুন" সংলাপে হাইলাইট করা "সমস্ত রিমোট থেকে আনুন" চেকবাক্স

  1. আপনার "মাস্টার" শাখায় ডাবল ক্লিক করুন এটি ইতিমধ্যে চেক আউট করা হয়নি কিনা তা পরীক্ষা করে দেখুন।

  2. আপনি যে প্রতিশ্রুতি পুনরায় সেট করতে চান তা সন্ধান করুন, আপনি যদি রেপোকে "মাস্টার" বলে থাকেন তবে আপনি সম্ভবত এটিতে "মাস্টার / মাস্টার" ট্যাগের সাথে প্রতিশ্রুতি সন্ধান করতে চাইবেন।

এটিতে "মাস্টার / মাস্টার" ট্যাগের সাথে প্রতিশ্রুতিবদ্ধতার উদাহরণ

  1. কমিট> "এই প্রতিশ্রুতিতে বর্তমান শাখাটি পুনরায় সেট করুন" এ ডান ক্লিক করুন।

  2. কথোপকথনে, "ব্যবহারের মোড:" ক্ষেত্রটি "হার্ড - সমস্ত কার্যকরী অনুলিপি পরিবর্তন বাতিল করুন" তে সেট করুন "তারপরে" ওকে "টিপুন (কোনও পরিবর্তন যা আপনি প্রথমে কোনও পৃথক শাখায় হারাতে চান না তা অবশ্যই নিশ্চিত করুন) press

"প্রতিশ্রুতি পুনরায় সেট করুন" ডায়ালগটিতে "মোড ব্যবহার করে" ক্ষেত্রটি হাইলাইট করা হয়েছে।  এটি "সমস্ত কাজের অনুলিপি পরিবর্তন বাতিল করুন" এ সেট করা আছে

  1. আপনার রেপির অনুলিপিতে পরিবর্তনগুলি আপলোড করতে "পুশ" বোতামটি (উত্স গাছের শিরোনামের উপরে বামে) ক্লিক করুন।

শিরোনাম অঞ্চলে "পুশ" বোতাম

তোমার হয়ে গেল!

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