গিট সাবমডিউল যুক্ত করুন: "স্থানীয়ভাবে একটি গিট ডিরেক্টরি পাওয়া যায়" issue


190

আমি প্রকৃতপক্ষে উপকমান্ডগুলি সহ গিট কীভাবে ব্যবহার করতে হয় তা শেখার চেষ্টা করছি git submodule। আমি ইতিমধ্যে একটি সার্ভার সেট আপ করেছি যার উপর আমি এসএসএইচ ব্যবহার করে গিট সংগ্রহস্থলগুলি হোস্ট, পুশ এবং টানতে পারি। আমি এই সার্ভারে একটি প্রধান গিট সংগ্রহশালা "ট্র্যাভেল" তৈরি করেছি যাতে আমি আমার সমস্ত প্রকল্পগুলি সাবমডিউলস হিসাবে রাখতে চাই।

আমার ট্র্যাভেল সংগ্রহশালায়, আমি ইতিমধ্যে tools/libftসাব-মডিউল হিসাবে আমার একটি প্রকল্প ইতিমধ্যে যুক্ত করেছি: আমি এই উপ-মডুলটি বিকাশ করতে, এটি ধাক্কা দিতে এবং এটি টানতে সক্ষম হয়েছি।

তবে যখন আমি অন্য সাবমডিউলটি যুক্ত করার চেষ্টা করি (আমার সার্ভারে fdf.git থেকে fdf নামকরণ করা হয়), আমি নিম্নলিখিত সমস্যাটি পাই:

git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf

'প্রোজেটস / এফডিএফ' এর জন্য একটি গিট ডিরেক্টরি স্থানীয়ভাবে দূরবর্তী (গুলি) এর সাথে পাওয়া যায়: উত্স ssh: //git@XXX.XXX.XXX.XXX: XXXXX / opt / git / fdf.git আপনি যদি এই স্থানীয় গিটটি পুনরায় ব্যবহার করতে চান ডিরেক্টরি থেকে আবার ক্লোনিংয়ের পরিবর্তে ডিরেক্টরি: // এক্সএক্সএক্স.এক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্সএক্স / অপট / গিট / এফডিএফ.এইটি '--ফোর্স' বিকল্পটি ব্যবহার করুন। স্থানীয় গিট ডিরেক্টরিটি সঠিক রেপো না হলে বা '- নাম' বিকল্পের সাহায্যে অন্য নামটি বেছে নেওয়ার অর্থ কী তা আপনি নিশ্চিত নন।

আসলে এখানে কোনও উপ-ডিরেক্টরি নেই projets/

আমি অন্য থ্রেডে পড়েছিলাম যে git submodule sync.gitmodules ফাইলটি আমার ব্যবহার করা বা সম্পাদনা করা উচিত যাতে আমার সাবমডিউলের উত্স সংগ্রহস্থলের URL টি পরিবর্তিত হতে পারে।

তবে আমার .gitmodules ফাইলটিতে আমার প্রথম সাবমডিউল (সরঞ্জাম / libft) সম্পর্কিত তথ্য থাকে, প্রজেট / এফডিএফ সম্পর্কিত নয়:

[submodule "tools/libft"]
    path = tools/libft
    url = ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/libft.git

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

আমি যদি সমাধান পেতে পারি তবে আমি খুশি হব তবে কেবল একটি ব্যাখ্যাও সহায়ক হবে।


একটি ছোট সংশোধন: এটি 'সঞ্চয়ী', 'ডিপোজিটরি' নয়। আসলেই কোনও উত্তর নয়, তবে প্রকল্পগুলি একে অপরের থেকে স্বতন্ত্র থাকলে প্রতিটি প্রকল্পের পক্ষে সাবমডিউলের পরিবর্তে নিজস্ব রেপো রাখাই ভাল।
জেএমসি

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

ওয়েল, কৌতূহল সবসময় একটি ভাল কারণ! :) এটা অদ্ভুত। আপনি কি সাবডমডুলটি এর আগে যোগ করেননি তা নিশ্চিত?
জেএমসি

ট্র্যাভেল / এ নেই এবং আমার ~ / এ fdf.git ক্লোন করার জন্য কোনও প্রোব্ল্যাম নেই ~ ট্র্যাভেল / এফডিএফ এর কোনও সন্ধান পাই না। শুধু libft: /
vmonteco

5
ওহ অপেক্ষা করুন, /Travail/.git/modules/projets/আমি সন্ধান করলাম এবং আমি একটি fdfডিরেক্টরি পেলাম । এটি মনে হয় কার্যকারী গাছের মধ্যে নয় তবে পুরানো কমিটগুলিতে। এটি কি সমস্যা তৈরি করতে পারে?
vmonteco

উত্তর:


438

আমি সম্প্রতি এই মুছে ফেলা সাবমডিউল হিসাবে একই পথ সহ একটি সাবমডিউল যুক্ত করার চেষ্টা করে এই এসও পোস্টে এসেছি।

শেষ পর্যন্ত আমার পক্ষে এটিই কাজ করেছিল ( এই নিবন্ধটি অনেক সাহায্য করেছিল ):

আপনি যদি ইতিমধ্যে চালিয়ে না যান git rm --cached path_to_submodule(কোনও পিছনে স্ল্যাশ নেই) rm -rf path_to_submodule, তবে এটি করুন!

তারপর:

  1. .gitmodulesফাইল থেকে প্রাসঙ্গিক লাইন মুছুন । যেমন এগুলি মুছুন:

    [submodule "path_to_submodule"] path = path_to_submodule url = https://github.com/path_to_submodule

  2. .Git / কনফিগার থেকে প্রাসঙ্গিক বিভাগটি মুছুন। যেমন এগুলি মুছুন:

    [submodule "path_to_submodule"] url = https://github.com/path_to_submodule

  3. rm -rf .git/modules/path_to_submodule

তারপরে, আপনি শেষ পর্যন্ত করতে পারেন:

git submodule add https://github.com/path_to_submodule


47
এটি সত্যিই সহায়ক ছিল, কারণ আমি কাজ করি এমন আর কিছুই খুঁজে পেলাম না। অন্যান্য পরামর্শগুলির মূল পার্থক্যটি ছিল আপনার পদক্ষেপ # 3। ধন্যবাদ!
অ্যান্ড্রয়েড ডেভ

8
আমার জন্য 2 এবং 3 পদক্ষেপের প্রয়োজন ছিল।
U007D

8
আমার জন্য তৃতীয় ধাপের দরকার ছিল তবে, কেন সেখানে সাবমডিউলটি বিদ্যমান?
ক্র্ট

1
আমার জন্য, আমি পদক্ষেপ 1 এবং 2 এড়িয়ে গেছি (যা এর মধ্যে ইতিমধ্যে সঠিক সেটিংস ছিল) এবং 3 ধাপটি এটি আমার জন্য স্থির করে। (আমি ইতিমধ্যে git rmএবং rm -rfপদক্ষেপের প্রাথমিক পদক্ষেপটি ইতিমধ্যে সম্পন্ন করেছি ))
রক লি

2
এমনকি তৃতীয় ধাপ আমার পক্ষে কাজ করে নি। আমার একটি মাত্র সাবমডিউল ছিল তাই আমি পুরোটি মুছলাম .git/modulesএবং এটি কাজ শেষ করে।
এইচ

47

আমি jbmilgrom এর সমাধানটি চেষ্টা করেছি, বিশেষত আমি চেষ্টা করেছি git rm --cacheএবং ডিরেক্টরি / সাবমডিউল সেখানে না থাকায় এটি আমার পক্ষে কাজ করেনি। আমার জন্য যা কাজ করেছিল তা হ'ল:

  1. rm -rf .git/modules/blah
  2. git submodule add git://path.to.new

কমান্ড এবং অন্যান্য সমস্ত ডিরেক্টরি চেষ্টা --forceকরার পরে আমি এটি করেছি , মাস্টার ইত্যাদির দিকে ধাক্কা দিয়েছি ... ডিরেক্টরিটি বিদ্যমান ছিল না এবং ক্যাশে করার কোনও কারণ নেই। দেখা যাচ্ছে সেখানে এই ত্রুটিটি পড়েছিল।git submodulerm.git/modules


15

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


এটি কাজ করেছে :) আপনাকে ধন্যবাদ। আমি মনে করি আমি আসলে এই ভুল করেছি।
vmonteco

21
আমি যখন বলি ডিরেক্টরিটি বিদ্যমান না তখন আমি এটি করি। দেখে মনে হচ্ছে এটি উভয়ই বিদ্যমান এবং না: /
নাথান হর্নবি

41
@ tom-mcfarlin শেষে, .gitmodule থেকে Imanally লাইন এবং .git / মডিউলগুলি থেকে একটি ফোল্ডার সরিয়ে ফেলা হয়েছে, তারপরে এটি আমাকে একটি নতুন সাবমডিউল যুক্ত করতে দেয়। এটি করার আরও ভাল উপায় হতে পারে তবে আমি খুব বেশি সময় পেলাম। আপনি যদি এই পথে যেতে চান তবে আমি আপনাকে একটি ভাল ব্যাকআপ তৈরি করার পরামর্শ দিচ্ছি এবং যদি এটি আপনার পক্ষে ভুল হয়ে যায় তবে দয়া করে আমাকে দোষারোপ করবেন না। শুভকামনা।
স্পার্ক্লোস

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

10
@ নাথানহর্নবি @ স্পার্ক্লোস @ টমএমসিফারলিন - গীতের আরও সাম্প্রতিক সংস্করণগুলিতে আপনি দেখতে পাবেন যে গিট-সাবমডিউল .git ফোল্ডারে একটি ডিরেক্টরি যুক্ত করেছে। উদাহরণস্বরূপ, আপনি যদি ডিরেক্টরিতে থাকেন /tmp/repoতবে চালান git submodule add ../otherrepo.git, তারপরে আপনি দেখতে পাবেন যে /tmp/repo/.git/modules/otherrepoফোল্ডারটি বিদ্যমান। সমস্যাটিই আমার জন্য ছিল। আমি ফটোগুলি .git থেকে ম্যানুয়ালি মুছে ফেলেছি এবং সবকিছুই কাজ করেছে।
আলেকজান্ডার বার্ড

13

যদি আপনি ইতিমধ্যে সাবমোডুল ডিরেক্টরিটি মুছে ফেলে থাকেন তবে আমি যেমন করেছিলাম, jbmilgrom এর বাকি নির্দেশাবলী অনুসরণ করুন। কীটি rm -rf .git/modules/path_to_submoduleতবে এগিয়ে যান এবং আপনার সম্পূর্ণ পিতামাতা রেপো ডিরেক্টরিটি প্রথমে ব্যাকআপ করুন

আপনার যদি কেবল একটি সাবমডিউল থাকে তবে কেবল মুছুন .gitmodules


2

এই দুটি কমান্ড আমার পক্ষে কাজ করে।

rm path/to/submodule -rf
rm .git/modules/path/to/module -rf

এই. দেখে মনে হচ্ছে সাবমডিউলগুলি তৈরির দুটি উপায় রয়েছে। তার মধ্যে একটিতে সাবফোল্ডারটির কাছে কেবল একটি একক .git ফাইল থাকবে যা সুপারপজেক্টের একটি ডিরেক্টরিকে কেবল সূচনা করে, শুরু করে .git/modules/। এখানে একটি ফোল্ডার রয়েছে যা সাবমডিউলের জন্য সংগ্রহস্থল সংরক্ষণ করে। এই সংগ্রহস্থলটি মোছা আমার পক্ষে সমস্যাটি স্থির করে, যদিও গৃহীত উত্তরটি তা দেয় নি।
উইলিয়াম রান্ডোকন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.