গিট: মারাত্মক: প্যাথস্পেক সাবমডিউলে রয়েছে


145

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

আমার রেপো কীভাবে সেট আপ করা হয়েছে তা এখানে। আমার আমার সোর্স ব্রাঞ্চ রয়েছে, এতে আমার হ্যাকিল এবং মার্কডাউন ফাইল রয়েছে। এটি _siteডিরেক্টরিতে এইচটিএমএল তৈরি করে , যা আমার masterশাখার সাথে সংযুক্ত একটি সাবমডিউল হিসাবে সেট আপ করা হয়েছে ।

আমি সমস্যা ছাড়াই সাইটটি তৈরি করি, তারপরে cd_ সাইট ডিরেক্টরিতে। যাইহোক, আমি যখন git add ./*সদ্য উত্পন্ন এইচটিএমএল ফাইলগুলি চেষ্টা করি তখন আমি নিম্নলিখিত ত্রুটিটি পাই:

fatal: Pathspec './about.html' is in submodule '_site'

আমি যখন চেষ্টা করি তখন আমি git add --allএই ত্রুটিটি পাই:

git: pathspec.c:317: prefix_pathspec: Assertion `item->nowildcard_len <= item->len && item->prefix <= item->len' failed.

/home/travis/build.sh: line 245: 1566 Aborted git add --all

কী কারণে এটি হচ্ছে এবং আমি কীভাবে এড়াতে পারি?

আপনি এখানে সংগ্রহস্থল দেখতে পারেন ।

উত্তর:


430

গিট থেকে ডিরেক্টরিটি সরিয়ে ফেলা এবং এটি আবার যুক্ত করা আমার পক্ষে কাজ করেছে:

 git rm --cached directory
 git add directory

আপনি যদি উদ্দেশ্যমূলকভাবে .gitডিরেক্টরিটি সরিয়ে ফেলেন তবে এটি কাজ করে কারণ আপনি directoryআপনার মূল গিট প্রকল্পে যুক্ত করতে চেয়েছিলেন । আমার নির্দিষ্ট ক্ষেত্রে, আমি গিটকে একটি এক্সটেনশন ক্লোন করেছিলাম এবং git add .খুব বেশি চিন্তা না করে দৌড়ে এসেছি । গিট একটি সাবমডিউল তৈরি করার সিদ্ধান্ত নিয়েছে, যা আমি পছন্দ করি না। তাই আমি সরিয়ে directory/.gitদৌড়ে .ুকলাম Git: fatal: Pathspec is in submodule। সাব-মডুল স্টাফগুলি কীভাবে সরিয়ে ফেলা যায় তা আমি খুঁজে পাইনি। উপরের দুটি লাইন দিয়ে স্থির।


8
এটি আমার এমন একটি সমস্যার সমাধান করেছে যেখানে আমি ঘটনাক্রমে একটি প্রকল্প একটি বিদ্যমান প্রকল্পে টেনে নামিয়ে একটি সাবমডিউল তৈরি করেছি। আমি সেখানে অন্যান্য প্রতিটি পরামর্শ সম্পর্কে চেষ্টা করেছিলাম। ডিরেক্টরিটি সরিয়ে আবার যুক্ত করা আমার সমস্যার সমাধান করেছে। ধন্যবাদ।
রেভনোঃ

আমি .git আছে এবং এটি দেখুন! তবে যখন আমি কোনও ফোল্ডারে থাকা কিছু ফাইল প্রতিশ্রুতিবদ্ধ করতে চাই, তখন এটি একটি ত্রুটি দেখায় "ব্লেব্লাহ গিট হিসাবে পরিচিত কোনও ফাইল (গুলি) এর সাথে মেলে না"
ডাঃ জ্যাকি

এটি সমস্যার সমাধান করেছে। আমার ক্ষেত্রে, আমি প্রকল্পটি অন্য মেশিনে ক্লোন করেছি।
আন্তোনিভা

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

10

মনে হচ্ছে git addপ্রসঙ্গটি হ'ল প্যারেন্ট রেপো ("প্যারেন্ট" এর অর্থ সাবমডিউল সহ একটি), যা সতর্কতাটিকে ট্রিগার করে।

চেষ্টা করুন এবং এর প্রসঙ্গটি এর সাথে পরিবর্তন করুন:

cd _site
git --git-dir=.git --work-tree=. add . 
git --git-dir=.git --work-tree=. commit -m "new files"

ভুলে যাবেন না, এটি যদি কাজ করে তবে আপনাকে প্যারেন্ট git add _siteরেপোতে ফিরে যেতে হবে এবং যেহেতু সাবরেপোর পরিবর্তন হবে।

এবং আপনি উভয় ধাক্কা হবে।


জানুয়ারী 2017 আপডেট করুন (2+ বছর পরে)

গিট 2.12 এর সাহায্যে আপনি prefix_pathspec: Assertionআর এটি দেখতে পাবেন না।

দেখুন কমিট 2d81c48 দ্বারা (09 জানুয়ারী 2017) স্টিফান Beller ( stefanbeller)
সহায়তা করেছেন: জেফ কিং ( peff) এবং জুনিও সি হামানো ( gitster)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 00880a1 , 18 জানুয়ারী 2017)

pathspec: সাবমডিউল সম্পর্কিত pathspecত্রুটির জন্য আরও ভাল বার্তা দিন

" git add a/b" যখন " a" চালানো একটি সাবমডিউলটি সঠিকভাবে ভুল করে ফেলেছে তবে অর্থবহ ত্রুটি বার্তা ছাড়াই।


আমি error: unknown option গিট-দির পেয়েছি it এছাড়াও, আমি ট্র্যাভিসের মধ্যে থেকে আমার পিতামাতার রেপো প্রতিশ্রুতিবদ্ধ করতে পারি না, এটি ট্র্যাভিসের একটি অসীম লুপ চলার কারণ ...
jmite

@jmite আমি উত্তর সংশোধন করেছেন: --git-dirএবং --work-treeএর অপশন আছে gitকমান্ড না git addকমান্ড। git addযদি git commitব্যবহারিক না হয় তবে কমপক্ষে অংশটি ব্যবহার করে দেখুন।
ভনসি

এটি আমার জন্য কিছুটা ভেঙে গেছে বলে মনে হচ্ছে তবে আমি সমাধানটি এখানে
সিজি দিলেজেন্ড

4

মনে হচ্ছে আমার সমস্যাটি হ'ল আমি ঘটনাক্রমে .gitসাবমডিউলের ফোল্ডারটি মুছে ফেলছিলাম।


1
আমার ঠিক একইরকম সমস্যা। আপনি কীভাবে সমাধান করেছেন তা ভাগ করে নিতে পারেন?
ম্যাট

.Git ফোল্ডারটি মোছার জন্য আমার স্ক্রিপ্ট পরিবর্তন করে আমি এটি সমাধান করেছি। সুতরাং আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি আপনার স্ক্রিপ্টটি পরীক্ষা করে দেখুন, ডিরেক্টরিতে আসলে আপনার কাছে একটি .git ফোল্ডার রয়েছে কিনা তা দেখুন।
jmite

1
আমি করি তবে আমি এ থেকে মুক্তি পেতে চাই কারণ রিমোট রেপোর অস্তিত্ব নেই। এটির উত্স কোড যেমন আছে তেমন অন্তর্ভুক্ত করা আমাদের পক্ষে সহজ।
ম্যাট

আপনার পক্ষে সবচেয়ে ভাল বাজি হ'ল রিমোট রেপো পরিবর্তন করা। git remoteকমান্ডটি একবার দেখুন ।
jmite

3

দেখে মনে হচ্ছে আপনি অ-ইনিশিয়েলড সাবমোডিয়ুলগুলিতে অপারেটিং করছেন (তারা মূলত .gitডিরেক্টরিগুলি নিখোঁজ করছেন ), সুতরাং আপনার প্রথমে সেগুলি আরম্ভ করে আপডেট করা উচিত:

git submodule init
git submodule update

অন্যথায় যদি আপনার আর এই সাবমডিউলটির প্রয়োজন না হয় তবে এটিকে সরিয়ে দিন:

git submodule deinit _site

বা:

git rm -f --cached _site

এবং এটি আবার যুক্ত করুন:

git add _site

দ্বারা আপনার বর্তমান অসামান্য submodules চেক করুন: git submodule status

আরও দেখুন: গিট অ্যাডে 'দৃser় ব্যর্থতা' দিয়ে গিট ত্রুটি কেন হয়?


1

এই প্রকল্পের জন্য আপনার একাধিক সাব-মডিউল ডিরেক্টরি থাকলেও এই সমস্যার জন্য 100% ঠিক করুন:

> git submodule foreach --recursive deinit -f --all -- <relative path>
> git add --all -f
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.