আমার গিথুব সংগ্রহশালা থেকে ফাইলগুলি টেনে আনার চেষ্টা করা হচ্ছে: "সম্পর্কহীন ইতিহাসকে একীভূত করতে অস্বীকৃতি"


151

আমি গিট শিখছি, এবং আমি গিট সম্প্রদায়ের বইটি অনুসরণ করছি।

পূর্বে (অনেক দিন আগে) আমি কিছু ফাইল সহ গিথুবে একটি পাবলিক ভান্ডার তৈরি করেছি। এখন আমি আমার বর্তমান কম্পিউটারে একটি স্থানীয় গিট সংগ্রহস্থল স্থাপন করেছি এবং কিছু ফাইল প্রতিশ্রুতিবদ্ধ করেছি। তারপরে আমি আমার গিথুব পৃষ্ঠায় একটি রিমোট পয়েন্টিং যুক্ত করেছি:

[root@osboxes c]# git remote add learnc https://github.com/michaelklachko/Learning-C

এটি সফল বলে মনে হয়েছিল:

[root@osboxes c]# git remote show learnc
* remote learnc
  Fetch URL: https://github.com/michaelklachko/Learning-C
  Push  URL: https://github.com/michaelklachko/Learning-C
  HEAD branch: master
  Remote branch:
    master tracked
  Local ref configured for 'git push':
    master pushes to master (local out of date)

এখন আমি আমার কম্পিউটারে গিথুব রেপো থেকে ফাইলগুলি ডাউনলোড করতে চাই। আমি এটা করেছি:

[root@osboxes c]# git fetch learnc
[root@osboxes c]# git merge learnc/master
warning: refname 'learnc/master' is ambiguous.
Already up-to-date.

তবে আমি আমার স্থানীয় ডিরেক্টরিতে কোনও নতুন ফাইল দেখতে পাচ্ছি না। সেগুলি আমি কীভাবে পেতে পারি?

আমি এটি করার চেষ্টাও করেছি:

[root@osboxes c]# git pull learnc master
From https://github.com/michaelklachko/Learning-C
 * branch            master     -> FETCH_HEAD
fatal: refusing to merge unrelated histories

বিটিডাব্লু, স্থানীয়ভাবে আমি মাস্টার শাখায় আছি (অন্য কোনও শাখা নেই):

[root@osboxes c]# git status
On branch master
nothing to commit, working directory clean

4
আপনি যখন আপনার স্থানীয় রেপো সেট আপ করেন, আপনি কি আপনার গিথুব রেপো ক্লোন করেছেন বা সবে করেছেন git init? পরবর্তী অবস্থাতে os রেপোগুলি সম্পর্কিত নয় (কোনও সাধারণ কমান্ড নেই) এবং আপনি সেগুলি মার্জ করতে পারবেন না (টান আনতে হবে + মার্জ করুন)।
পল

আমি গিট ইনিশ করলাম। এটি ঠিক করার জন্য আমার গিথুব রেপো ক্লোন করা উচিত?
মাইকেলএসবি

1
আপনি আপনার গিথুব রেপো ক্লোন করতে পারেন এবং এটিতে কাজ চালিয়ে যেতে পারেন, তবে এটি এখনও আলাদা রেপো হবে। আপনি কি দুটি সম্পর্কযুক্ত ইতিহাস একত্রিত করতে চান?
পল

আমি অনুমান করি যে আমি ইতিহাসগুলিকে একত্রীকরণ করতে চাই, তবে সত্যই আমি কেবল স্থানীয়ভাবে এবং গিথুবগুলিতে ফাইলগুলি একত্রিত করতে চাই। আমি বলতে চাইছি আমি গিথুবের কাছে থাকা পুরানো ফাইলগুলির ইতিহাসের বিষয়ে সত্যই পাত্তা দিই না।
মাইকেলএসবি

উত্তর:


315

চেষ্টা --allow-unrelated-histories

সর্বোচ্চ 30৩০ মত মন্তব্য করা হয়েছে, বা এখানে ব্যাখ্যা হিসাবে গিট সম্পর্কহীন ইতিহাসকে একীভূত করতে অস্বীকার করছেন



সর্বদা এটি সেট করার জন্য কোনও কনফিগার বিকল্প নেই কেন? প্রতিবারই আমাকে এই বিকল্পটি সন্ধান করতে হবে; আমি 2k8 সাল থেকে গিট নিয়ে কাজ করি এবং এই শিশু-বসে থেকে সম্পূর্ণরূপে বিরক্ত। বোকা বিকল্প সবসময় ছিল না। কমপক্ষে প্রত্যাখাত বার্তায় ওভাররাইডটি ব্যবহার করতে হবে।
nyov

98
git checkout master
git merge origin/master --allow-unrelated-histories

তাহলে বিরোধের সমাধান করুন then

git add -A .
git commit -m "Upload"
git push

1
উপরের সমাধানটি বিশদ দেওয়ার জন্য ধন্যবাদ।
রাহুল রাজ

39

যদিও আমি সমস্ত লোকের কাজের সমস্যাগুলি অবরুদ্ধ করার জন্য আছি, আমি মনে করি না "পুশ - ফোর্স" বা "--ille_unrelated_histories" নতুন ব্যবহারকারীদের সাধারণ সমাধান হিসাবে শেখানো উচিত কারণ তারা যখন কোনও এগুলি ব্যবহার করে তখন কোনও সংগ্রহস্থলের সত্যিকারের ধ্বংসাত্মক কারণ হতে পারে can জিনিসগুলি কেন প্রথম স্থানে কাজ করছে না তা বুঝতে না পেরে।

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

আপনি যখন নতুন অনলাইন সংগ্রহশালাটি তৈরি করবেন তখন একটি বিকল্প আছে "একটি README দিয়ে এই সংগ্রহস্থলটি আরম্ভ করুন"। আপনি যদি সূক্ষ্ম মুদ্রণটি পড়ে থাকেন তবে এটিতে "আপনি যদি কোনও বিদ্যমান সংগ্রহশালা আমদানি করেন তবে এই পদক্ষেপটি এড়িয়ে যান" says

আপনি যে বাক্সটি চেক করে থাকতে পারেন। বা তেমনিভাবে, প্রাথমিক ধাক্কা দেওয়ার চেষ্টা করার আগে আপনি অনলাইনে একটি অ্যাড / কমিট করেছেন। যা ঘটে তা আপনি প্রতিটি জায়গায় একটি অনন্য প্রতিশ্রুতিবদ্ধ ইতিহাস তৈরি করেন এবং নেভারমোরের উত্তরে উল্লিখিত বিশেষ ভাতা ছাড়া তাদের পুনর্মিলন করা যায় না (কারণ গিটটি আপনাকে সেভাবে পরিচালনা করতে চায় না)) আপনি এখানে উল্লিখিত কিছু পরামর্শ অনুসরণ করতে পারেন, বা পরের বার আপনি কিছু স্থানীয় ফাইলকে একেবারে নতুন রিমোটের সাথে সংযুক্ত করতে চান কেবল সেই বিকল্পটি যাচাই করবেন না; প্রাথমিক ধাক্কা জন্য রিমোট পরিষ্কার রাখা।

তথ্যসূত্র: গিট + হাবের সাথে আমার প্রথম অভিজ্ঞতাটি হ'ল এই একই সমস্যাটি দেখা দিয়েছিল এবং কী ঘটেছে এবং কেন হয়েছে তা বোঝার জন্য প্রচুর শেখা।


12

যদি এক প্রান্তে উল্লেখযোগ্য ইতিহাস না থাকে (যদি গিথুব প্রান্তে এটি কেবলমাত্র একটি রেডমে কমিট হয়) তবে আমি প্রায়শই আমার স্থানীয় রেপোতে ম্যানুয়ালি কপি করে git push -fআমার সংস্করণটিকে নতুন মূল প্রতিশ্রুতিবদ্ধ করতে আরও সহজ মনে করি ।

আমি দেখতে পেয়েছি এটি কিছুটা কম জটিল, একটি অস্পষ্ট পতাকা মনে রাখার দরকার নেই, এবং ইতিহাসকে কিছুটা পরিষ্কার রাখুন।


11

আপনার শাখায় - মাস্টার বলুন, সম্পর্কযুক্ত ইতিহাস টানুন এবং মঞ্জুরি দিন

git pull origin master --allow-unrelated-histories

আমার জন্য কাজ করেছেন।


1
এই কমান্ডটি হ'ল গিথুবে একটি অরিজিনাল রেপো তৈরি করার সময় লাইসেন্স বা রিডএমই যুক্ত করার জন্য আপনার সম্মত হওয়া দরকার।
এফ

4

নিম্নলিখিত আদেশটি কার্যকর করুন:

git pull origin master --allow-unrelated-histories

একটি মার্জ ভিম খুলবে। কিছু মার্জ করা বার্তা যুক্ত করুন এবং:

  1. ESC টিপুন
  2. শিফট + 'টিপুন;
  3. 'ডাব্লু' টিপুন এবং তারপরে 'কি' টিপুন।

এবং আপনি যেতে ভাল।


3

যখন আমি ব্যবহার করেছি --allow-unrelated-histories, এই আদেশটি অনেকগুলি দ্বন্দ্ব তৈরি করেছে। ফাইলগুলিতে দ্বন্দ্ব ছিল যা আমি এমনকি কাজ করি নি। ত্রুটিটি কাটিয়ে " Refusing to merge unrelated histories"উঠতে, আমি নিম্নলিখিত পুনরায় কমান্ডটি ব্যবহার করেছি:

git pull --rebase=preserve --allow-unrelated-histories

এটির পরে প্রতিশ্রুতিবদ্ধ বার্তাটি দিয়ে অনির্দিষ্ট পরিবর্তনের প্রতিশ্রুতি দিন। অবশেষে, নিম্নলিখিত কমান্ডটি চালান:

git rebase --continue

এর পরে, আমার কার্যকরী অনুলিপি রিমোট কপির সাথে আপ-টু-ডেট ছিল এবং আমি আমার পরিবর্তনগুলি আগের মতো ঠেলাতে সক্ষম হয়েছি। টানানোর সময় আর কোনও সম্পর্কযুক্ত ইতিহাসের ত্রুটি নেই।


1
আসল সংস্করণ: git pull --rebase=merge --allow-unrelated-histories--rebase=preserve
git-scm.com/docs/git-pull#

0

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

fatal: refusing to merge unrelated histories on every try

--Ille-সম্পর্কযুক্ত-ইতিহাস কমান্ডটি ব্যবহার করুন। এটি পুরোপুরি কাজ করে।

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