গিট নতুন সাবমডিউলগুলিকে আরম্ভ / সিঙ্ক / আপডেট করবে না


113

এখানে আমার .gitmodulesফাইলের বিষয়বস্তুর অংশ :

[submodule "src/static_management"]
        path = src/static_management
        url = git://github.com/eykd/django-static-management.git
[submodule "external/pyfacebook"]
        path = external/pyfacebook
        url = http://github.com/sciyoshi/pyfacebook.git

তবে, .git/configশুধুমাত্র প্রথমটি রয়েছে:

[submodule "src/static_management"]
        url = git://github.com/eykd/django-static-management.git

দ্বিতীয় সাবমডিউল ( external/pyfacebook) অন্য একটি বিকাশকারী একটি বৈশিষ্ট্য শাখায় যুক্ত করেছিলেন। আমি এখন বিকাশ উত্তরাধিকারসূত্রে পেয়েছি, এবং বৈশিষ্ট্য শাখাটি পরীক্ষা করে দেখেছি। তবে, গিট আমার জন্য সাবমডুলটি টানবে না। আমি চেষ্টা করেছিলাম:

  • git submodule init
  • git submodule update
  • git submodule update --init
  • git submodule sync
  • .git/configচলমান এবং চলমান থেকে সমস্ত সাব-মডিউল সংজ্ঞা সরিয়ে দেওয়া git submodule init। এটি কেবলমাত্র বিদ্যমান বিদ্যমান সাবমডিউলে অনুলিপি করে এবং নতুনটিকে উপেক্ষা করে।
  • .git/configম্যানুয়ালি এবং চলমান অবস্থায় নতুন সাবমডিউল সংজ্ঞা প্রবেশ করানো হচ্ছে git submodule update। কেবলমাত্র বিদ্যমান বিদ্যমান সাবমডিউলগুলি আপডেট করতে বিরক্ত করে।

বিভিন্ন সংমিশ্রণে, তবে গিটটি কেবল .git/configনতুন সামগ্রীর উপর ভিত্তি করে আপডেট হবে না .gitmodulesবা এটি external/pyfacebookফোল্ডারটি তৈরি করবে এবং সাবমোডিয়ুলের সামগ্রীগুলি টানবে না।

আমি কী মিস করছি? ম্যানুয়াল হস্তক্ষেপ (হাতে হাতে একটি submodule এন্ট্রি যোগ .git/config) সত্য প্রয়োজন, এবং কেন?

সম্পাদনা: ম্যানুয়াল হস্তক্ষেপ কাজ করে না। ম্যানুয়ালি নতুন সাবমডিউল এন্ট্রি যুক্ত করে .git/configকোনও কাজ করবেন না। নতুন সাবমডিউল উপেক্ষা করা হয়।


1
১.7. running.১ চালানো এবং একই সমস্যা: "গিট সাবমডিউল সিঙ্ক" .gitmodules এ পরিবর্তনের পরে .git / কনফিগারেশন আপডেট করে না।
জেমস প্রিটস

2
এই নিবন্ধটি সহায়ক: chrisjean.com/git-submodules-adding- using
removing- এবং-

উত্তর:


35

আপনি কি সম্প্রতি গিট সংস্করণে 1.7.0.4 এ আপগ্রেড করেছেন? আমি করেছি এবং এখন একই সমস্যা হচ্ছে ...

সম্পাদনা করুন: আমি আমার সমস্যাটি স্থির করেছি তবে সমস্যাটি কোথায় ছিল তা সম্পর্কে কোনও ধারণা নেই। আমি ম্যানুয়ালি .git / কনফিগারেশন এবং .gitmodule উভয় থেকে সাবমোডুল এন্ট্রিগুলি সরিয়েছি এবং আমার সাবমোডিয়ুলগুলি ব্যবহারযোগ্য পদক্ষেপগুলির সাথে পুনরায় যুক্ত করেছি (গিট সাবমডিউল যোগ ইত্যাদি ...) ... ওয়ার্কফোর্ম কিন্তু এই থ্রেডের কোনও মূল্য যোগ করি না।


আমি এখনই 1.7.2 অবধি রয়েছি তবে আমি বিশ্বাস করি যে কমপক্ষে 1.6.x থেকে আমার সমস্যা হচ্ছে I've
ডেভিড আইক

এবং হ্যাঁ, এটি ভাবতে আসুন, আপনার বর্ণনা অনুসারে করণ শেষ করেছিলাম (আমি ভুলে গেছি এই প্রশ্নটি এখনও উন্মুক্ত ছিল!)। আপনি যদি নিজের উত্তরটি কিছুটা পালিশে আপত্তি না করেন তবে আমি তা গ্রহণ করব।
ডেভিড আইক

9
এটি গিটের একটি চলমান দুর্বলতা। এমনকি এসএনএন বহিরাগতদের সাথে আরও ভাল।
পিটার ডিউইউজ

3
আমি মনে করি আমি এটির মধ্যেও এসেছি (একই পদক্ষেপগুলি শেষ পর্যন্ত এটি ঠিক করেছে) to কেবলমাত্র আমি লক্ষ্য করেছি, এটি আবার যুক্ত করার পরে, কমিট করার পরে, প্রতিশ্রুতিবদ্ধভাবে বলা হয়েছে: 160000 লিবিব / জুরবি-সুইং-হেল্পার্স (হু?) তৈরি করুন
রোজারডপ্যাক

1
"গেম মোড 160000" সম্পর্কে প্রো গিট বইটি বলেছে: "র্যাক এন্ট্রির জন্য 160000 মোডটি লক্ষ্য করুন That এটি গীতের একটি বিশেষ মোড যা মূলত আপনি সাবডিরেক্টরি বা একটি এর পরিবর্তে ডিরেক্টরি এন্ট্রি হিসাবে প্রতিশ্রুতি রেকর্ড করছেন recording দায়ের। " git-scm.com/book/en/Git-Tools-Submodules
জোহান

92

আমার একই সমস্যা ছিল - এটি প্রমাণিত হয়েছিল যে .gitmodules ফাইলটি প্রতিশ্রুতিবদ্ধ ছিল, তবে প্রকৃত সাবমডিউল কমিট (যেমন সাবমডিউলের কমিট আইডির রেকর্ড) ছিল না।

এটিকে ম্যানুয়ালি যোগ করার ফলে কৌশলটি মনে হচ্ছে - যেমন:

git submodule add http://github.com/sciyoshi/pyfacebook.git external/pyfacebook

(এমনকি .git / কনফিগারেশন বা .gitmodule থেকে কিছু অপসারণ না করেই))

তারপরে আইডিটি সঠিকভাবে রেকর্ড করার জন্য এটি প্রতিশ্রুতিবদ্ধ করুন।

এই কার্যকরী উত্তরে আরও কিছু মন্তব্য যুক্ত করা: গিট সাবমোডিয়াল আরম্ভ বা গিট সাবমডিউল আপডেট যদি কাজ না করে তবে উপরে বর্ণিত গিট সাবমডিউল যুক্ত ইউআরএলটি কৌশলটি করা উচিত। এটি পরীক্ষা করে কেউ পার হতে পারে

 git config --list

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

 mv yourmodulename yourmodulename-temp
 git submodule update --init

আপনার সাবমডিউলে স্থানীয় পরিবর্তন রয়েছে কিনা তা জানতে, এটি গিট স্ট্যাটাস -u (আপনি যদি সাবমডিউলে পরিবর্তনগুলি দেখতে চান) বা গিট স্ট্যাটাস --ignore-submodules (আপনি যদি পরিবর্তনগুলি দেখতে না চান) এর মাধ্যমে দেখতে পাবেন submodule)।


কিসের external/pyfacebookজন্য?
ইগোরগানাপলস্কি

2
@ আইগরগানাপলস্কি এটি আপনার সাবমডিউলের জন্য গন্তব্য পথ।
ইউহুয়া

এটি আমাকে সাহায্য করেছে, অনেক ধন্যবাদ! আমি কেবল যুক্ত করতে পারি যে গন্তব্য পথটি ইতিমধ্যে উপস্থিত থাকলে (এটি অন্যান্য কমান্ড চেষ্টা করার ফলে এটি আমার জন্য করেছিল) একটি নিম্নলিখিত বার্তাটি পেয়ে যা কেবল বিভ্রান্তিকে 'your/local/path' already exists and is not a valid git repo
বাড়িয়ে তোলে

1
"গিট কনফিগারেশনgit config --list | grep submodule | sed -e "s/submodule\.//" -e "s/\(.*\)\.url=\(.*\)/git submodule add --force \2 \1/" | bash
পুগগান

64

গিট সংস্করণ 2.7.4। এই আদেশটি স্থানীয় কোড আপডেট করে git submodule update --init --force --remote


20
আমার জন্য কিছুই করছে না।
কার্লো উড

1
গিট- সাবমডিউল [ডকুমেন্টেশন) ( git-scm.com/docs/git-submodule#git-submodule--- স্মৃতি ) সম্পর্কিত উপরোক্ত কমান্ডটি সাবমডিউলের স্থানীয় শাখা আপডেট করা উচিত।
পলিক

1
@ পলিক আপনি রক!
ডেনিস ট্রফিমভ

1
আপনি পৃথক মডিউল সাথে আপডেট করতে পারেন git submodule update --init --force --remote <module-name>
অ্যাডাম ফারিনা

15

একই সমস্যা যখন Git উপেক্ষিত ছিল initএবং updateকমান্ড, এবং কিছুই করে না।

কিভাবে ঠিক করবো

  1. আপনার সাবমডিউল ফোল্ডারটি গিট রেপোতে প্রতিশ্রুতিবদ্ধ হওয়া উচিত
  2. এটি .gitignore এ থাকা উচিত নয়

যদি সেই প্রয়োজনীয়তাগুলি পূরণ হয় তবে এটি কার্যকর হবে। অন্যথায়, সমস্ত কমান্ড কোনও বার্তা এবং ফলাফল ছাড়াই কার্যকর করা হবে।

আপনি যদি এটি সমস্ত করেন এবং তা এখনও কার্যকর না হয়:

  1. সাবমোডুল ম্যানুয়ালি যুক্ত করুন, যেমন git submodule add git@... path/to
  2. git submodule init
  3. git submodule update
  4. সমস্ত ফাইল প্রতিশ্রুতিবদ্ধ এবং ধাক্কা - .gitmodulesএবং আপনার মডিউল ফোল্ডার (নোট, ফোল্ডারের সামগ্রীটি কমিট করবে না)
  5. আপনার স্থানীয় গিট রেপো ড্রপ
  6. একটি নতুন ক্লোন করুন
  7. নিশ্চিত করুন যে .git/configএখনও কোনও সাবমডিউল নেই
  8. এখন, git submodule init- এবং আপনি মডিউলটি নিবন্ধিত একটি বার্তা দেখতে পাবেন
  9. git submodule update - মডিউল আনতে হবে
  10. এখন দেখুন .git/configএবং আপনি নিবন্ধিত সাবমডিউল পাবেন

1
আমি বিশ্বাস করি সাব-মডিউলগুলির পথটি .gitignore এ থাকতে পারে। কমপক্ষে আমি ডেভজেমস মিলার এর উত্তর অনুসরণ করে এটি কাজ করেছিলাম। আর কিছুই আমার পক্ষে কাজ করেনি।
gebbissimo

7

উত্তরগুলিতে এখানে (এছাড়াও) অনেক বিভ্রান্তি রয়েছে বলে মনে হচ্ছে।

git submodule initহয় না জাদুর মধ্যে কাপড় উৎপন্ন করার উদ্দেশ্যে .git / কনফিগ (.gitmodules থেকে)। মূল প্রকল্পটি ক্লোনিংয়ের পরে, বা পূর্ববর্তী অ-বিদ্যমান সাবমডিয়ুল যুক্ত করার জন্য একটি প্রতিশ্রুতি আঁকানোর পরে সম্পূর্ণ শূন্য সাব ডাইরেক্টরিতে কিছু সেট আপ করার উদ্দেশ্য এটি।

অন্য কথায়, আপনি git cloneএমন একটি প্রকল্প অনুসরণ করেন যার সাবমডিউল রয়েছে (যা আপনি ক্লোনটি একটি। গিটমডিউল ফাইল চেক আউট করে জানতে পারবেন) ক git submodule update --init --recursive

আপনি কোনও (বা ) দিয়ে অনুসরণ করেন না , এটি কাজ করার কথা নয়। আসলে, জিনিসগুলি কাজ করে যদি অ্যাড ইতিমধ্যে উপযুক্ত .git / কনফিগার আপডেট করে।git submodule add ...git submodule initgit submodule update --init

সম্পাদনা

যদি পূর্বের অ-বিদ্যমান গিট সাবমডিউলটি অন্য কারও দ্বারা যুক্ত করা হয়েছিল, এবং আপনি git pullসেই প্রতিশ্রুতিগুলির মধ্যে একটি করেন, তবে সেই সাবমোডিয়ুলের ডিরেক্টরিটি পুরোপুরি খালি হয়ে যাবে (যখন আপনি git submodule statusনতুন সাবমডিউলের হ্যাশ কার্যকর করবেন তবে অবশ্যই -সামনে থাকবে এটি।) এক্ষেত্রে আপনাকে নতুনটি, পূর্বে অস্তিত্বহীন, সাব-মডিউলটি চেক আউট করার জন্য git pullএকটি git submodule update --init(প্লাস --recursiveযখন এটি একটি সাবমোডুলের অভ্যন্তরে একটি সাবমডিউল রয়েছে) দিয়ে অনুসরণ করতে হবে; ঠিক যেমন সাবমডিউলগুলি নিয়ে একটি প্রকল্পের প্রাথমিক ক্লোন হওয়ার পরে (যেখানে স্পষ্টত আপনার আগে সে সাবমডিউলগুলি ছিল না)।


1
এটি আকর্ষণীয়, কারণ git help submoduleএই সম্পর্কে init সম্পর্কে বলা হয়েছে: "init: সূচীতে রেকর্ডকৃত সাবমোডিয়ালগুলি সূচনা করুন (যা অন্যত্র যুক্ত এবং প্রতিশ্রুতিবদ্ধ ছিল)। গিটমডিউলগুলি থেকে .git / কনফিগারেশনে সাবমোডিয়ালের নাম এবং url অনুলিপি করে" " সুতরাং এটি নিশ্চিতরূপে শোনাচ্ছে যা আপনি যা বলেন না ঠিক তাই করা উচিত ...? গিট ডকুমেন্টেশনের আপডেটের জন্য সময়?
ব্র্যাড

@ ব্র্যাড আমার মনে হয় না আমি এটি বলেছিলাম - তবে আমি সেই নির্দিষ্ট মামলার জন্য একটি ব্যাখ্যা দিয়েছি। ধন্যবাদ।
কার্লো উড

@ কার্লো ওহুডের কোনও ধারণা কেন গিট সাবমডিউলগুলির লেখকরা সিদ্ধান্ত নিয়েছিলেন যে --initনতুন সাবমডিউলগুলি (স্বয়ংক্রিয়ভাবে সেগুলি দখল করার পরিবর্তে update) নেওয়া দরকার? দেখে মনে হচ্ছে আপনার সংগ্রহস্থলটি আপডেট করার ফলে প্রয়োজনীয় সমস্ত কিছু দখল করা উচিত যতক্ষণ না এটি ডেটা ধ্বংস করে। সঙ্গে --initআপনি এটি বাহিনী যে নতুন submodules নির্মিত হয়ে থাকতে পারে, বা শুধু সবসময় একটি ইস্যু --initপ্রত্যেক সময় যে ক্ষেত্রে, আবার, এটা যে এটি ডিফল্ট দ্বারা সক্ষম করা আবশ্যক বলে মনে করেন।
ক্যাটসকুল

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

6

আমার একই সমস্যা ছিল তবে উপরের সমাধানগুলির কোনওটিই সহায়তা করে নি। .Gitmodule এ এবং .git / কনফিগারেশনের এন্ট্রি সঠিক ছিল কিন্তু কমান্ড git submodules update --init --recursiveকিছুই করছে না। আমি সাবমডিউল ডিরেক্টরিটিও সরিয়েছি এবং চালিয়েছি এবং git submodules update --init --recursiveসাবমডিউল ডিরেক্টরিটি ফিরে পেয়েছি তবে ঠিক আগের মতো একই প্রতিশ্রুতি দিয়ে।

আমি এই পৃষ্ঠায় উত্তর খুঁজে পেয়েছি । আদেশটি হ'ল:git submodule update --remote


2
এটি আমার জন্যও সঠিক সমাধান ছিল। আমি এর git submodule updateবদলে দৌড়াচ্ছিলাম git submodule update --remote
অ্যান্ড্রু মেডলিন

5

জাদুর এর সাজান, কিন্তু আজ আমি দৌড়ালাম git submodule initদ্বারা অনুসরণ git submodule syncদ্বারা অনুসরণ git submodule updateএবং এটি আমার submodules কাছে ... ম্যাজিক শুরু? সম্ভবত! এটি সত্যই গিটের সাথে একটি বিরক্তিকর অভিজ্ঞতা ...

যে আঁচড়ের দাগ. আমি আসলে এটি করে কাজ করেছিলাম git submodule update --init --recursive। আশাকরি এটা সাহায্য করবে.

PS: নিশ্চিত করুন যে আপনি রুট গিট ডিরেক্টরিতে রয়েছেন, সাবমডিউলের নয়।


7
নাহ এটি আমার পক্ষে একেবারে কিছুই করে না।
ইগোরগানাপলস্কি 21 '18

@ ইগোরগানাপলস্কি আমার জন্য যা কাজ করেছে তা দিয়ে আমি উত্তরটি সম্পাদনা করেছি। যদি এটি কাজ করে আমাকে জানাবেন!
লেবি ফিগুয়েরা

আমি আপনার নতুন আদেশগুলি চেষ্টা করেছিলাম, কিন্তু তারা কোনও কিছুই করেনি।
ইগোরগানাপলস্কি

5

ম্যানুয়ালি সেটআপ করা .gitmodulesযথেষ্ট তা ভেবে ভ্রান্ত

আমার স্থানীয় git version 2.22.0এই লেখা হিসাবে।

git submodule initকাজ করে কেন কাজ করছি না তা ভেবে আমি এই থ্রেডে এসেছি ; আমি .gitmodulesফাইলটি সেটআপ করেছি এবং এগিয়ে গেলাম git submodule init...

গুরুত্বপূর্ণ

  1. git submodule add company/project.git includes/projectহয় প্রয়োজনীয় (যখন প্রথমবারের মত মডিউল যোগ) এই হবে:

    • কনফিগারেশন যোগ করুন .git/config
    • .gitmodulesফাইল আপডেট করুন
    • সাব-মডুলের অবস্থানটি ট্র্যাক করুন ( includes/projectএই উদাহরণে)।
  2. আপনি আবশ্যক তারপর git commitপরে আপনি submodule যুক্ত করেছেন, এই কমিট হবে .gitmodulesএবং ট্র্যাক করা submodule অবস্থান।

যখন প্রকল্পটি আবার ক্লোন করা হবে, তখন এতে .gitmodulesএবং খালি সাবমডিউলগুলি ডিরেক্টরি থাকবে (উদাহরণস্বরূপ includes/projectএই উদাহরণে)। এই মুহুর্তে চালিত .git/configনা হওয়া অবধি সাবমডিউল কনফিগারেশন নেই git submodule initএবং এটিকে কেবলমাত্র কাজ করে মনে রাখবেন কারণ .gitmodulesএবং includes/projectপ্রধান গিট রেপোতে ট্র্যাক করা হয়েছে।

রেফারেন্সের জন্য দেখুন:


4

ডেভ জেমস মিলারের উত্তর অনুসারে আমি নিশ্চিত করতে পারি যে এটি আমার পক্ষে কাজ করেছে। এখানে গুরুত্বপূর্ণ বিষয় ছিল সাবপ্রজেক্টগুলি কমিট আইডি করা। শুধু .gitmodule এ প্রবেশ করা যথেষ্ট ছিল না।

এখানে একটি উপযুক্ত প্রতিশ্রুতিবদ্ধ হয়:

https://github.com/dirkaholic/vagrant-php-dev-box/commit/d5f4c40bdbd80eefbb5ac6029823733f591435ae


3

আমারও একই সমস্যা ছিল।

.gitmodulesসাবমডিউল ছিল, কিন্তু একটি git submodule initআদেশ পরে এটি ছিল না.git/config

সাবমোডুল যুক্ত করা বিকাশকারীকে .gitignoreফাইলে সাবডমডিউল ডিরেক্টরি যুক্ত করেছে । যে কাজ করে না।


2

আপনার যেমনটি আমি দেখতে পেয়েছি যে গিট সাবমডিউল সিঙ্কটি আপনি যা প্রত্যাশা করছেন তা করে না। কেবল একটি স্পষ্ট করার পরেgit submodule add একটি সাব মড্যুল url পরিবর্তন হয়।

সুতরাং, আমি এই স্ক্রিপ্টটি ভিতরে রেখেছি ~/bin/git-submodule-sync.rb :

https://gist.github.com/frimik/5125436

এবং আমি কিছু পোস্ট প্রাপ্তি গিট ডিপ্লাই স্ক্রিপ্টগুলিতে একই যুক্তি ব্যবহার করি।

এখনই আমাকে যা করা দরকার তা হ'ল সম্পাদনা .gitmodules, তারপরে এই স্ক্রিপ্টটি চালান এবং এটি শেষ পর্যন্ত এমনভাবে কাজ করে যা আমি ভেবেছিলাম git submodule sync


এটি কেবল কয়েকটি রেপোতে ঘটেছিল বলে মনে হচ্ছে ... সম্ভবত গিটের কিছু বাগের কারণে। এটি নতুনভাবে তৈরি হওয়া ভান্ডারগুলিতে আমার পক্ষে খুব বেশিদিন হয়নি, তবে কিছুদিন আগে ফিরে
এসেছিল

2

আমার আজ একই সমস্যা ছিল এবং আমি বুঝতে পেরেছিলাম যে আমি টাইপ করেছি কারণ আমার git submodule initসেই লাইনে ছিল আমার .git/config:

[submodule]
   active = .

আমি সেটি সরিয়ে টাইপ করেছি:

git submodule update --init --remote

এবং সবকিছু স্বাভাবিক অবস্থায় ফিরে এসেছিল, আমার সাবমডিউলটি যথারীতি এর উপ-ডিরেক্টরিতে আপডেট হয়েছিল।


2

আমার সমস্যাটি হ'ল রেপোর পূর্ববর্তী বিকাশকারী submodules/thingফোল্ডারটিকে কেবল একটি নিয়মিত ফোল্ডার হিসাবে প্রতিশ্রুতি দিয়েছিলেন , মানে যখন আমি চালানোর চেষ্টা করেছি তখন git submodule add ...এটি ব্যর্থ হবে:'submodules/thing' already exists in the index তবুও সাবমোডুল আপডেট করার চেষ্টা করাও ব্যর্থ হবে কারণ এটি দেখেছিল যে পথটি করেনি একটি submodule থাকে।

ঠিক করার জন্য, আমাকে submodules/thingফোল্ডারটি মুছতে হবে, মুছে ফেলতে প্রতিশ্রুতিবদ্ধ করতে হবে, তারপরে git submodule addএটিকে সঠিকভাবে যুক্ত করতে কমান্ডটি চালাতে হবে:

git submodule add --force --name thing https://github.com/person/thing.git submodules/thing

1

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

সাবমোডিয়ুলগুলিকে পিছনে যুক্ত করা, এবং প্রয়োজনীয় সংশোধিত জিনিসগুলি সামঞ্জস্য করার git show $breaking_commit_shaজন্য ( রেজিএক্সপ্যাটের সাথে মিলিত লাইনগুলির সন্ধান ^-Subproject) পাওয়া লোকের সাথে সাবমোডিয়ালের কমিট শের তুলনা করা ।


1

সাবমডিউল দির এবং এর বিষয়বস্তু ("বাহ্যিক / পাইফেসবুক" ফোল্ডার) মুছে ফেলা যদি এটির আগে উপস্থিত থাকে তবে git submodule add ...সমস্যাগুলি সমাধান হতে পারে।


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

1

সাবমডিউলে আমারও একই সমস্যা ছিল। এটি কেবল ক্লোন / টান / আপডেট / যাই হোক না কেন হতে চায়নি।

সাবডমডিউলটি পুনরায় যুক্ত করার চেষ্টা করে git submodule add git@my-repo.git destinationআমি নিম্নলিখিত আউটপুটটি পেয়েছি:

A git directory for 'destination' is found locally with remote(s):
  origin        git@my-repo.git
If you want to reuse this local git directory instead of cloning again from
  git@my-repo.git
use the '--force' option. If the local git directory is not the correct repo
or you are unsure what this means choose another name with the '--name' option.

সুতরাং, আমি অ্যাড কমান্ডটি প্রয়োগ করার চেষ্টা করেছি :
git submodule add --force git@my-repo.git destination

এটা আমার ক্ষেত্রে কাজ করেছে।


0

রেকর্ডের জন্য:
আমি সাবমডিউল হিসাবে খালি সংগ্রহস্থল যুক্ত করে একই সমস্যাটি তৈরি করেছি । এই ক্ষেত্রে, সাবমডিউলের জন্য কোনও রেফারেন্স হ্যাশ উপলব্ধ ছিল না, মূল পোস্টার দ্বারা বর্ণিত ত্রুটির দিকে পরিচালিত করে।

প্রতিশ্রুতিবদ্ধ থাকার পরে জোর করে সংস্থানটি যুক্ত করা সমস্যার সমাধান করেছে (আরভিডস পোস্টে যেমন)
git submodule add --force git@my-repo.git destination


0
  • আপনার থেকে সাবমডিউলটি সরান .git/config
  • চালান git submodule initকমান্ড
  • আপনার সাবমডিউল ডিরেক্টরিতে যান এবং চালান git pull origin master

এটি এখন কাজ করা উচিত


0

আমার জন্য কী কাজ করেছে তা কেবল ভাগ করে নিচ্ছি:

git clone --recurse-submodules <repository path>

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


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