সাবমডিউল নয় এমন পথের জন্য .gitmodule এ কোনও সাবমডিউল ম্যাপিং পাওয়া যায় নি


335

আমার একটি প্রকল্প রয়েছে যার একটি সাবমডিউল রয়েছে lib/three20

আমার .gitmoduleফাইলটি এমন দেখাচ্ছে:

[submodule "lib/three20"]
    path = lib/three20
    url = git://github.com/facebook/three20.git

আমি অতীতে ত্রুটি ছাড়াই এটি ক্লোন করেছি, ( git submodule initক এর পরে git submodule update) এবং এটি কিছু সময়ের জন্য কাজ করে যাচ্ছি ।

আমি এটি একটি নতুন মেশিনে ক্লোন করার চেষ্টা করেছি এবং এখন আমি এই ত্রুটিটি পেয়ে যাচ্ছি git submodule init:

No submodule mapping found in .gitmodules for path 'Classes/Support/Three20'

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

কোন ধারনা?


1
দেখে মনে হচ্ছে আপনি সম্ভবত এই পথটিকে গিটলিংক হিসাবে যুক্ত করতে পেরেছেন - একটি সাবমডিউল একটি গিটলিংকের সংমিশ্রণ এবং .gitmoddules এবং .git / কনফিগারেশন ফাইলগুলিতে প্রবেশকারী। এই সম্পর্কে একটি সাম্প্রতিক প্রশ্ন ছিল; এটির সন্ধান করার চেষ্টা করা হচ্ছে ...
ক্যাসাবেল


@ জেফ্রমি - .gitফোল্ডারের কোথাও আমি সেই পথটির কোনও উল্লেখ পাই না । একটি grep -r "Classes/Support/Three20" *.*
করলেও

2
@ বেন: আপনি .git ফোল্ডারে সেই পাঠ্যটি অনুসন্ধান করছেন কেন ? গিট কীভাবে বিষয়বস্তু সঞ্চয় করে তা নয়। যদি আপনি সত্যিই git ls-tree HEAD Classes/Supportগিটটি এটি কী বলে তা যাচাই করতে চান, চেষ্টা করুন এবং যদি এটি থ্রি 20 বলে একটি প্রতিশ্রুতিবদ্ধ হয় তবে সেখানে একটি গিটলিংক রয়েছে। যদি সেখানে থাকে তবে ভোনসি এটিকে সঠিক সাবমডিউলে পরিণত করতে বা এটি নিয়মিত ট্র্যাক করা সামগ্রীতে রূপান্তর করতে উপরের লিঙ্কিত প্রশ্ন থেকে যথাযথ নির্দেশাবলী অনুসরণ করুন।
ক্যাসকেবেল

2
ভবিষ্যতের দর্শনার্থীদের জন্য, যদি আপনার সমস্যাটি মুছে ফেলা সাবমডিউলে এবং হিরকু ত্রুটিটি ছুঁড়ে ফেলার সাথে যুক্ত হয়, github.com/heroku/heroku-repo এবং Herku রেপো থেকে হিরকু -রেপো ইনস্টল করুন : রিসেট -a
অ্যাপ্লিকেশন

উত্তর:


310

অনুসরণ করছেন rajibchowdhury এর উত্তর (upvoted), ব্যবহারgit rm কমান্ড যা পরামর্শ দেওয়া হয় সরানোর জন্য বিশেষ এন্ট্রি সূচক একটি submodule ইঙ্গিত মধ্যে (ক বিশেষ মোড সঙ্গে ফোল্ডারের 'একটি' 160000)।

যদি সেই বিশেষ প্রবেশের পথটি.gitmodule ( Classes/Support/Three20মূল প্রশ্নের মতো ' ') তে উল্লেখ না করা হয় , তবে " পথের জন্য কোনও সাবমডিউল ম্যাপিং পাওয়া যায় না.gitmodules " ত্রুটি বার্তা এড়াতে আপনাকে এটিকে সরিয়ে ফেলতে হবে need

আপনি সূচকের সমস্ত এন্ট্রি পরীক্ষা করতে পারেন যা সাবমোডিয়ুলগুলি উল্লেখ করছে:

git ls-files --stage | grep 160000

পূর্ববর্তী উত্তর (নভেম্বর 2010)

এটা সম্ভব যে আপনি নিজের প্রাথমিক সাবমডিউলটি সঠিকভাবে ঘোষণা করেন নি (যেমন শেষের দিকে কোনও লেজ '/' ছাড়াই আমার পুরানো উত্তরে বর্ণিত হয়েছে , যদিও আপনার .gitmoduleপাথগুলি এতে ঠিক আছে)।

এই থ্রেডে উল্লেখ করা হয়েছে:

একটি নতুন ক্লোন থেকে 'গিট সাবমডিউল ইন' চালানোর সময় আপনি কি একই ত্রুটি পেয়েছেন?
যদি তা হয় তবে আপনার কিছু ভুল আছে।

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

স্পষ্টতই, আপনার মূল .gitmodulesফাইলটি মুছবেন না , তবে .gitmodulesআপনার কার্যকারী গাছের অতিরিক্ত ফাইলগুলি দেখুন ।


তবুও "ভুল সাবমডিউল ইনিশিয়ালেশন" প্রসঙ্গে জেফ্রোই সাবমোডিয়ুলগুলি উল্লেখ করেছেন যা আসলে গিটলিংক।

আনরে্যাক করা সামগ্রী কীভাবে ট্র্যাক করবেন দেখুন ? এই জাতীয় ডিরেক্টরিকে সত্যিকারের সাবমডিউলে রূপান্তর করতে।


5
আমার কাছে কোনও .gitmodule ফাইল নেই এবং আমি এখনও প্রতিটি চেকআউট / টানে এই বার্তাটি পাচ্ছি। আমি কি করব?
অ্যারোনবাউমান

2
: এখানে আমার উত্তর পাওয়া stackoverflow.com/questions/14720034/...
aaronbauman

4
@Aaronbauman হ্যাঁ, আপনাকে গিটলিংকটি সরিয়ে ফেলতে হবে, সুতরাং git rm xxx(স্ল্যাশ ছাড়াই) git rm --cachedআপনাকে সূচি থেকে অপসারণ করার সময় এটিকে ডিস্কে রাখতে দেয়।
ভনসি

গিট এলএস-ফাইলগুলি চালনার পরে - স্টেজ | গ্রেপ 16000, আমি কিছু এন্ট্রি পেয়েছি। আমি এগুলি কীভাবে সরিয়ে ফেলব?
জন মাইক

1
@JohnMike আপনি একটি আছে .gitmoduleসেই এন্ট্রি উল্লেখ, তারপর stackoverflow.com/a/16162000/6309 । যদি তা না হয় তবে একটি সরল git rm afolder(কোনও পিছনে / স্ল্যাশ নেই)
ভোনসি

412

'অন্যান্য লাইব্রেরি / এমকেস্টোর' পথের জন্য। গিটমডিউলগুলিতে কোনও সাবমডিউল ম্যাপিং পাওয়া যায় নি

$ git submodule update --init

ত্রুটি কেন হয় তা আমি জানতাম না। এক মিনিট ব্যয় করার পরে উত্তরটি স্ট্যাকওভারফ্লোতে পেয়ে গেল found

$ git rm --cached OtherLibrary/MKStore

এবং তারপরে সাব-মডিউলটি আবার আপডেট করুন। এটা ঠিক কাজ করছে।

http://en.saturngod.net/no-submodule-mapping-found-in-gitmodules


2
এটি https: // লিঙ্কগুলি git: // লিঙ্কগুলি পরিবর্তন করার জন্য .gitmodules ফাইল সম্পাদনা করার পরে আমার পক্ষে কাজ করেছে
দিওয়ান

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

আমি বিশ্বাস করতে পারি না আমি দুর বিকল্পটি ভুলে গেছি। আপনি যদি কোনও প্রকল্প ক্লোন করেন তবে সেগুলি আপডেট করার আগে সাবমোডিয়ালগুলি শুরু করা উচিত।
অ্যালেক্স

এটি রেপোর মূল ডিরেক্টরিতে চালাতে হবে, তারপরে সবকিছু ঠিকঠাক কাজ করেছিল। ধন্যবাদ!
Pwdr

আরএম কমান্ডের জন্য আপনাকে অনেক ধন্যবাদ । আমি নামক git submodule sync | grep "mapping found"তারপর git rmও আবার git submodule sync। সমস্যা চলে গেল!
নাইন

24

আমি যখন স্টাফটি করতে সোর্স ট্রি ব্যবহার করি তখন এটি বার্তাটি থুথু করে ফেলবে।
আমি যে বার্তাটি পেয়েছি:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree submodule update --init --recursive
No submodule mapping found in .gitmodules for path 'SampleProject/SampleProject'
Completed with errors, see above

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

আমার সলিউশন হ'ল এটি মুছে ফেলার জন্য কমান্ড লাইনটি ব্যবহার করুন।

$ git rm -r SampleProject --cached
$ git commit -m "clean up folders"

ময়লা আবর্জনা সরান এবং এটি পরিষ্কার রাখুন।


17

আমি আমার জন্য এই সমস্যাটি সমাধান করেছি। প্রাথমিকভাবে আমি এটি করার চেষ্টা করেছি:

git submodule add --branch master [URL] [PATH_TO_SUBMODULE]

এটি মাস্টার শাখার ক্লোন করতে চাইলে - ব্রাঙ্ক বিকল্পটি ব্যবহার করা উচিত নয় । এটি এই ত্রুটিটি ছুড়ে ফেলে:

fatal: Cannot force update the current branch.
Unable to checkout submodule '[PATH_TO_SUBMODULE]'

প্রতিবার আপনি একটি করার চেষ্টা করুন

git submodule sync

এই ত্রুটি নিক্ষেপ করা হবে:

No submodule mapping found in .gitmodules for path '[PATH_TO_SUBMODULE]'

এবং .gitmodule এ প্রয়োজনীয় লাইনগুলি কখনই যুক্ত হয় না।

সুতরাং আমার জন্য সমাধানটি ছিল:

git submodule add [URL] [PATH_TO_SUBMODULE]

9

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

git submodule add git@github.com:user/project.git MyApp/Resources/Project
Cloning into 'MyApp/Resources/Project'

সফল হয় তবে সমস্যাটি হ'ল ডিস্কে পথটি

Myapp/Resources/Project

আমি যা বুঝতে পারি না কেন গিটটি মডিউলটিকে ভুল ফোল্ডারে (আমার কমান্ডের ভুল ক্ষেত্রে উপেক্ষা করে) শুরু করছে তবে তারপরে কমান্ডগুলি সহ সঠিকভাবে (ব্যর্থ হয়ে) পরিচালনা করছে।


এখানে (উইন্ডোজ) একই, যদিও আমি বুঝতে পারি না। আপনার চেকআউটটির জন্য বিভিন্ন কেসিং সহ একটি ফোল্ডার নির্দিষ্ট করে নির্ধারণ করা উচিত এবং এটির মডিউলটির নাম পরিবর্তন করা উচিত নয়।
জাভিয়ের পইনাস 6'15

6

ঠিক git rm subdir আছে ঠিক আছে। এটি সূচক হিসাবে সাবডিরকে সরিয়ে ফেলবে।


5

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

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

কী হয়েছে তা নিশ্চিত নয়, আমি অনুমান করছি যে কেউ গিট সাবমডিউল কমান্ডটির অপব্যবহার করেছে, সম্ভবত যুক্তিগুলি উল্টিয়ে দিচ্ছে। এমনকি আমারও হতে পারত ... আশা করি এটি কারও সাহায্য করবে!


5

.gitmodules ফাইলটিতে আমি স্ট্রিং প্রতিস্থাপন করেছি

"path = thirdsrc\boost" 

সঙ্গে

"path = thirdsrc/boost", 

এবং এটি সমাধান! - -


ধন্যবাদ আমার সমস্যা সমাধান। সম্ভবত উইন্ডোতে সমস্যা দেখা দেয়। আমার ক্ষেত্রে পথটি ছিল "পথ = কিছু \\ ফোল্ডার"
রুজবেহ জি

উইন্ডোতে গিটের পরিবর্তে গিট-এলএফএস ব্যবহার করার সময় আমি কোনও ত্রুটি মারলে এটি আমার জন্য কাজ করেছিল। (কোন ত্রুটি মান Git ব্যবহার ঘটেছে)
frage

5

ফোল্ডার ম্যাপিং ফোল্ডারে পাওয়া যাবে .git/modules(প্রত্যেকটির configসাথে রেফারেন্সযুক্ত ফাইল রয়েছে worktree), সুতরাং নিশ্চিত হয়ে নিন যে এই ফোল্ডারগুলি কনফিগারেশনের সাথে সামঞ্জস্য করে.gitmodules এবং এর.git/config

তাই .gitmodulesসঠিক পথ রয়েছে:

[submodule "<path>"]
  path = <path>
  url = git@github.com:foo/bar.git

এবং .git/modules/<path>/config[core]বিভাগটি আপনার সুপথ করেছি <path>, যেমন

[core]
  repositoryformatversion = 0
  filemode = true
  bare = false
  logallrefupdates = true
  worktree = ../../../<path>

যদি ডান ফোল্ডারটি .git/modulesঅনুপস্থিত থাকে, তবে আপনাকে আপনার সাবমডিউল দিরে গিয়ে চেষ্টা করতে হবে git reset HEAD --hardবা git checkout master -f। যদি এটি সাহায্য না করে, আপনি সম্ভবত ভাঙা সাবমডিউলের সমস্ত উল্লেখ মুছে ফেলতে এবং এটি আবার যুক্ত করতে চান, তবে দেখুন: গিট সাবমোডিয়ুলটির নাম পরিবর্তন করুন


3

পরিস্থিতি: ডিরেক্টরিটি ডিআআরএ-এক্সএক্সএক্স থেকে সাব ডিরেক্টরিটি অন্য ডিরেক্টরিতে পরিবর্তন করে ডিআরবি-এক্সএক্সএক্সএক্স

  1. dirA-xxx dirB-xxx এ সরান
  2. dirB-xxx ব্যবহার করতে .gitmodule এ প্রবেশ পরিবর্তন করুন
  3. dirB-xxx ব্যবহার করতে .git / কনফিগারেশনে প্রবেশ পরিবর্তন করুন
  4. সঠিক ডিরেক্টরি প্রতিবিম্বিত করতে .git / মডিউলগুলি / dirA-xxx / কনফিগার করুন
  5. সঠিক ডিরেক্টরি প্রতিবিম্বিত করতে dirA-xxx / .git পরিবর্তন করুন
  6. চালান git submodule status

    যদি ফেরত ত্রুটি: পথ dirA-xxx এর জন্য। গিটমডিউলগুলিতে কোনও সাবমডিউল ম্যাপিং পাওয়া যায় নি। এটি ডায়ারএ-এক্সএক্সএক্সএক্সএক্সএক্সএক্সএর কারণে বিদ্যমান, তবুও এটি গিট দ্বারা ট্র্যাক করা হয়েছে। গিট সূচক এর দ্বারা আপডেট করুন:git rm --cached dirA-xxx

    দিয়ে চেষ্টা করুন git submodule foreach git pull। আমি গিট সাবমডিউল কাঠামোর প্রকৃত অধ্যয়ন করতে পারিনি, সুতরাং উপরের পদক্ষেপগুলি কিছুটা ভেঙে দিতে পারে। তবুও উপরের পদক্ষেপগুলি অতিক্রম করে, মুহুর্তে জিনিসগুলি ভাল দেখায়। যদি আপনার কাজটি সম্পন্ন করার জন্য কোনও অন্তর্দৃষ্টি বা সঠিক পদক্ষেপ থাকে তবে এটি এখানে ভাগ করে নিন। :)


1

সাধারণত, গিট প্রকল্পের মূল ডিরেক্টরিতে (.git /) একটি গোপন ডিরেক্টরি তৈরি করে

আপনি যখন কোনও সিএমএসে কাজ করছেন, তার সম্ভাব্য আপনি নির্দিষ্ট মডিউল / প্লাগইনের জন্য গিটের মেটাডেটা সহ .git / ডিরেক্টরি বহনকারী মডিউল / প্লাগইনগুলি ইনস্টল করতে পারেন its

দ্রুত সমাধান হ'ল সমস্ত .git ডিরেক্টরি অনুসন্ধান করা এবং কেবলমাত্র আপনার রুট গিট মেটাডেটা ডিরেক্টরি রাখা। আপনি যদি এটি করেন তবে গিট those মডিউলগুলিকে প্রকল্পের সাবমডিউল হিসাবে বিবেচনা করবে না।


1

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


1
আপনি কি .gitmodulesতার পরিবর্তে বোঝাতে চাইছেন না?
সেরিহি খিলিক

0

আমার ক্ষেত্রে ত্রুটিটি সম্ভবত পৃথক সাবমডিউল কনফিগারেশনের সাথে দুটি শাখায় .gitmodules এর মধ্যে একটি ভুল মার্জ হওয়ার কারণে হয়েছিল। এই ফোরামের কাছ থেকে পরামর্শ নেওয়ার পরে, আমি নিজেই .gitmodules ফাইল সম্পাদনা করার সমস্যাটি সমাধান করেছি, অনুপস্থিত সাব-মডিউল এন্ট্রি যোগ করা বেশ সহজ। এর পরে, কমান্ড গিট সাবমডিউল আপডেট --init --recursive কোনও সমস্যা ছাড়াই কাজ করেছে।


0

আমাদের জন্য সমস্যাটি হ'ল নকল সাবমডিউল এন্ট্রিগুলি .gitmodules (সম্ভবত কোনও সংযোজন থেকে) এ যুক্ত করা হয়েছিল। আমরা গিট মডুলেলে পাথ গিটের অভিযোগের জন্য অনুসন্ধান করেছি এবং দুটি অভিন্ন বিভাগ পেয়েছি। একটি বিভাগ মুছে ফেলা আমাদের জন্য সমস্যার সমাধান করেছে।

এটির মূল্যের জন্য, গিট 1.7.1 "কোনও সাবমডিউল ম্যাপিং" ত্রুটি দিয়েছে কিন্তু গিট 2.13.0 তেমন যত্ন নিয়েছে বলে মনে হচ্ছে না।

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