গিট সংগ্রহস্থলের মধ্যে আমি কীভাবে বিদ্যমান গিট সাবমডিউলটি স্থানান্তর করতে পারি?


356

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

ধরা যাক আমার .gitmodulesফাইলটিতে আমার নীচের প্রবেশ রয়েছে :

[submodule ".emacs.d/vimpulse"]  
path = .emacs.d/vimpulse  
url = git://gitorious.org/vimpulse/vimpulse.git

.emacs.d/vimpulseডিরেক্টরিটি .emacs.d/vendor/vimpulseমুছে না ফেলে ডিরেক্টরিতে সরানোর জন্য আমার কী টাইপ করতে হবে ( এখানে এবং এখানে ব্যাখ্যা করা হয়েছে ) এবং তারপরে পুনরায় যুক্ত করা উচিত।

গিটের কি সত্যিই সাবমোড্যুল ট্যাগের পুরো পথ দরকার need

[submodule ".emacs.d/vimpulse"]

অথবা কেবলমাত্র সাবপ্রজেক্টের নাম সংরক্ষণ করাও সম্ভব?

[submodule "vimpulse"]

দ্রষ্টব্য: ওপি তার নিজের প্রশ্নের উত্তরটি git mvকমান্ড দিয়ে সরাসরি প্রশ্নের উত্তর দিয়েছিল ।
ড্যান রোজনস্টার্ক 0

তবুও, আপনি git mvএই জাতীয় ব্যবহার করতে পারবেন না । নির্দিষ্ট স্ট্যাকওভারফ্লো . com/a/18892438/8047 হিসাবে deinitএরপরে ব্যবহার করুন । rm
ড্যান রোজনস্টার্ক

14
@ ইয়ার: কমপক্ষে গিট ২.০.০ তে, git mv কেবল সাবমডিউলগুলির জন্যও কাজ করে, অন্য কিছুর প্রয়োজন নেই।
পেড্রো রোমানো

9
গিট 1.8.5মুভিং সাবমডিউলগুলি দিয়ে শুরু করে git mvকমান্ডটি ব্যবহার করে স্থানীয়ভাবে সমর্থন করা হয় ( রিলিজ নোটগুলি থেকে , প্রথমে নিজের সাথে এটি যুক্ত)। এছাড়াও উত্তর এখানে দেওয়া
dennisschagt

git mvওয়ার্কস্পেসে সাবমোডিয়ালটি সরানো হয় এবং সাবমডিউল .git ফাইলগুলি সঠিকভাবে আপডেট করে তবে প্যারেন্ট রেপোর .git / মডিউল ফোল্ডারের মধ্যে থাকা সাব-ফোল্ডারটি একই থাকে - এটি কি ঠিক? (আমি Windows এ Git 2.19.0 ব্যবহার করছি)
Yoyo

উত্তর:


377

দ্রষ্টব্য: মন্তব্যে উল্লিখিত হিসাবে এই উত্তরটি গিটের পুরানো সংস্করণ সহ প্রয়োজনীয় পদক্ষেপগুলি বোঝায়। গিটের এখন সাবমডিউলগুলি চলার জন্য স্থানীয় সমর্থন রয়েছে:

গিট 1.8.5 যেহেতু, git mv old/submod new/submodপ্রত্যাশা অনুযায়ী কাজ করে এবং আপনার জন্য সমস্ত নদীর গভীরতানির্ণয় করে। আপনি গিট ১.৯.৩ বা আরও নতুন ব্যবহার করতে চাইতে পারেন, কারণ এতে সাবমডিউল চলার জন্য সংশোধন রয়েছে।


প্রক্রিয়াটি আপনি কীভাবে সাবমডিউলটি সরিয়ে ফেলবেন তার অনুরূপ (দেখুন আমি কীভাবে সাবমডিউলটি সরিয়ে দেব? ):

  1. .gitmodulesসাবমডিউলের পথটি যথাযথভাবে সম্পাদনা করুন এবং পরিবর্তন করুন এবং এর সাথে সূচীতে রেখে দিন git add .gitmodules
  2. প্রয়োজনে সাব-মডিউল ( mkdir -p new/parent) এর নতুন অবস্থানের প্যারেন্ট ডিরেক্টরিটি তৈরি করুন ।
  3. পুরানো থেকে সমস্ত ডিরেক্টরিকে নতুন ডিরেক্টরিতে স্থানান্তর করুন ( mv -vi old/parent/submodule new/parent/submodule)।
  4. নিশ্চিত করুন যে গিট এই ডিরেক্টরিটি ট্র্যাক করে ( git add new/parent)।
  5. সঙ্গে পুরানো ডিরেক্টরি সরান git rm --cached old/parent/submodule
  6. ডিরেক্টরিতে এর .git/modules/old/parent/submoduleসমস্ত সামগ্রী যুক্ত করুন .git/modules/new/parent/submodule
  7. .git/modules/new/parent/configফাইলটি সম্পাদনা করুন, নিশ্চিত করুন যে ওয়ার্কট্রি আইটেমটি নতুন অবস্থানগুলিতে নির্দেশ করে, তাই এই উদাহরণে এটি হওয়া উচিত worktree = ../../../../../new/parent/module। সাধারণত ..place জায়গায় সরাসরি পথে আরও দুটি ডিরেক্টরি থাকা উচিত ।
  8. ফাইলটি সম্পাদনা করুন new/parent/module/.git, নিশ্চিত করুন যে এতে থাকা পথটি মূল প্রকল্প .gitফোল্ডারের অভ্যন্তরে সঠিক নতুন অবস্থানকে নির্দেশ করে , তাই এই উদাহরণে gitdir: ../../../.git/modules/new/parent/submodule

    git status আউটপুট আমার পরে এটির মতো দেখাচ্ছে:

    # On branch master
    # Changes to be committed:
    #   (use "git reset HEAD <file>..." to unstage)
    #
    #       modified:   .gitmodules
    #       renamed:    old/parent/submodule -> new/parent/submodule
    #
    
  9. অবশেষে, পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ।


37
আপনি যখন আপডেট করেন। গিটমডিউলগুলি নিশ্চিত করে নিন যে আপনি সেই pathকনফিগারেশন এবং সাবমডিউলের নাম উভয়ই আপডেট করেছেন । উদাহরণস্বরূপ, বার foo বিন্যাস / মডিউল চলন্ত / মডিউল আপনাকে .gitmodules অধ্যায় পরিবর্তন আবশ্যক [submodule "foo/module"]থেকে [submodule "bar/module"], এবং যে একই ধারার অধীন path = foo/moduleথেকে path = bar/module। এছাড়াও, আপনাকে বিভাগটি .git / কনফিগার [submodule "foo/module"]করতে হবে [submodule "bar/module"]
উইলহেমটেল

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

33
খুব গুরুত্বপূর্ণ একটি নোট: আপনি যদি fatal: 'git status --porcelain' failed in...কেবল সাবমডিউলে কোনও .git ফাইল বা ডিরেক্টরি মুছুন।
অ্যান্টিটক্সিক

19
দেখে মনে হচ্ছে এই পোস্টটি কয়েকটি পদক্ষেপ মিস করেছে, যেমন সম্পাদনা করা .git/modules/old/parent/submodule, এটিকে নতুন স্থানে নিয়ে যাওয়া, আপডেট gitdirকরা old/parent/submodule/.git...
szx

38
গিট 1.8.5 যেহেতু, git mv old/submod new/submodপ্রত্যাশা অনুযায়ী কাজ করে এবং আপনার জন্য সমস্ত নদীর গভীরতানির্ণয় করে। আপনি সম্ভবত গিট ১.৯.৩++ ব্যবহার করতে চান কারণ এতে সাবমডিউল চলার জন্য সংশোধন রয়েছে।
ভ্যালোরিক

232

উপরের ভ্যালোরিকের মন্তব্য থেকে নেওয়া সবচেয়ে আধুনিক উত্তর:

  1. গিট ১.৯.৩ এ আপগ্রেড করুন (বা ২.১৮ যদি সাবমডিউলে নেস্টেড সাবমডিউল থাকে )
  2. git mv old/submod new/submod
  3. এরপরে .gitmodules এবং সাবমডিউল ডিরেক্টরিটি ইতিমধ্যে প্রতিশ্রুতিবদ্ধ হওয়ার জন্য মঞ্চস্থ হয় (আপনি এটি দিয়ে যাচাই করতে পারেন git status))
  4. এর সাথে পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ git commitএবং আপনি যেতে ভাল!

সম্পন্ন!


3
এটি প্রকৃতপক্ষে সরানো সাবমডিউলের ভিতরে একটি সাবমডিউল 1.9.3 ব্যতীত কাজ করেছিল। এর জন্য কিছু ম্যানুয়াল ক্লিনআপ দরকার ছিল।
পাসক্যাল

3
রিলিজ নোটগুলিতে1.8.5 বর্ণিত হিসাবে এটি ইতিমধ্যে সংস্করণে কাজ করা উচিত ।
dennisschagt

6
এই উত্তরের 1000 টি উর্ধ্বতন পাওয়া উচিত, আমি প্রায় উপরে উল্লিখিত পদক্ষেপগুলি সহ আমার রেপোতে গোলমাল করেছি, সত্যিই স্ট্যাকওভারফ্লোতে এই পরিস্থিতির জন্য একটি ইউজকেস থাকা উচিত।
এমজিপি

5
বাহ, এটি একটি কবজ (গিট 1.9.5) এর মতো কাজ করেছে, আমি আশা করি এটি নির্বাচিত উত্তর ছিল।
অ্যালেক্স ইলাইয়েভ

7
একটি জিনিস যা করে না তা হ'ল এটি সাবমডিউলের প্রাথমিক লেবেলটি পরিবর্তন করে না। আপনি যদি .gitmodulesফাইলটি পরীক্ষা করে থাকেন old/submodতবে পথটি পরিবর্তিত হওয়ার পরেও সাবমোডিয়ালের লেবেল হিসাবে ব্যবহৃত হবে। পাশাপাশি লেবেলটি পরিবর্তিত হতে পারে, এটি প্রদর্শিত হয় যে আপনাকে মডিউলগুলির ডিরেক্টরিটি অবশ্যই ভিতরে প্রবেশ করতে হবে .gitএবং তারপরে নিজেই লেবেলটি এতে পরিবর্তন করতে হবে .gitmodules
সিএমসিডিগ্রাগনকাই

55

আমার ক্ষেত্রে, আমি একটি ডিরেক্টরি থেকে একটি উপ-ডিরেক্টরিকে একটি উপ-ডিরেক্টরিতে স্থানান্তর করতে চেয়েছিলাম, যেমন "এএফ নেট নেটওয়ার্কিং" -> "এক্সট / এএফ নেট নেটওয়ার্কিং"। এই পদক্ষেপগুলি আমি অনুসরণ করেছি:

  1. সম্পাদনা .গিটমডিউলগুলি "মডেল / এএফ নেট নেটওয়ার্কিং" হতে সাব-মডুলের নাম এবং পথ পরিবর্তন করছে
  2. সাবমোডিয়ুলের গিট ডিরেক্টরিটি ".git / মডিউল / এএফ নেট নেটওয়ার্কিং" থেকে ".git / মডিউল / এক্সট্রা / এএফ নেট নেটওয়ার্কিং" এ সরান
  3. "এএফ নেট নেটওয়ার্কিং" থেকে পাঠাগারটিকে "এক্সট্রা / এএফ নেট নেটওয়ার্কিং" এ সরান
  4. ".Git / মডিউলগুলি / Ext / এএফ নেট নেটওয়ার্কিং / কনফিগারেশন" সম্পাদনা করুন এবং [core] worktreeলাইনটি ঠিক করুন । খনি থেকে পরিবর্তিত ../../../AFNetworkingকরা../../../../ext/AFNetworking
  5. "অতিরিক্ত / এএফ নেট নেটওয়ার্কিং / .git" সম্পাদনা করুন এবং ঠিক করুন gitdir। খনি থেকে পরিবর্তিত ../.git/modules/AFNetworkingকরা../../git/modules/ext/AFNetworking
  6. git add .gitmodules
  7. git rm --cached AFNetworking
  8. git submodule add -f <url> ext/AFNetworking

অবশেষে, আমি গিট স্ট্যাটাসে দেখেছি:

matt$ git status
# On branch ios-master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   modified:   .gitmodules
#   renamed:    AFNetworking -> ext/AFNetworking

এট ভয়েলা উপরের উদাহরণটি ডিরেক্টরি গভীরতাকে পরিবর্তন করে না, যা কার্য জটিলতায় বড় পার্থক্যের সৃষ্টি করে এবং সাব-মডুলের নাম পরিবর্তন করে না (যা সত্যিই প্রয়োজনীয় নাও হতে পারে, তবে আমি যা করেছি তার সাথে সামঞ্জস্য রাখতে এটি করেছি) যদি আমি সেই পথে একটি নতুন মডিউল যুক্ত করি তবে ঘটবে))


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

আপনাকে .git / মডিউলগুলির পাথের চারপাশে বদলানো বা সাবমডিউলটির নাম পরিবর্তন করতে হবে না (আরেন্ড এবং বব বেলের উল্লেখ হিসাবে)। যদিও, এটি করা জিনিসগুলিকে আরও পরিষ্কার রাখতে পারে।
gatoatigrado

কোনও উপ-সাবমডিউলগুলির জন্য 2, 3, 4 এবং 5 পুনরাবৃত্তভাবে পদক্ষেপগুলি করতে ভুলবেন না।
হার্জবউব

22

[আপডেট: ২০১৪-১১-২6] ইয়ার যেহেতু নীচে সুন্দরভাবে সংক্ষিপ্তসার জানিয়েছে, আপনার কিছু করার আগে, নিশ্চিত হয়ে নিন যে আপনি সাবমডিউলের URL টি জানেন know অজানা থাকলে, কীটিটি খুলুন .git/.gitmodulesএবং পরীক্ষা করুন submodule.<name>.url

আমার জন্য যা কাজ করেছিল তা হল অনুসরণ করে ব্যবহার করে পুরানো সাবমডিউলটি সরিয়ে ফেলা । তারপরে নতুন ফোল্ডারের নাম এবং কমিট দিয়ে আবার সাবমডিউল যুক্ত করুন। প্রতিশ্রুতি দেওয়ার আগে গিটের স্থিতি পরীক্ষা করা পুরানো সাবমডিউলটিকে নতুন নামে নতুন নামকরণ করে এবং .gitmodule সংশোধিত দেখায়।git submodule deinit <submodule>git rm <submodule-folder>

$ git submodule deinit foo
$ git rm foo
$ git submodule add https://bar.com/foo.git new-foo
$ git status
renamed:    foo -> new-foo
modified:   .gitmodules
$ git commit -am "rename foo submodule to new-foo"

1
এর জন্য 1.8.3 বা তার বেশি গিট প্রয়োজন। আপনার গিটটি
মাইকেল কোল

1
বা, একটি আরও ভাল উপায়: sudo অ্যাড-এপটি-রিপোজিটরি পিপিএ: গিট-কোর / পিপিএ সুডো আপডেট পাবেন সুডো অ্যাপট-গেট ইনস্টল গিট
মাইকেল কোল

@ মিশেলকোল ধন্যবাদ! তুমি সঠিক! দেখুন গীত-1.8.3 রিলিজ নোট । এফওয়াইআই: উবুন্টু -13.10 (সৌদি সালাম্যান্ডার) এর গিট-1.8.3.2 রয়েছে , তবে পিপিএ আছে তা জেনে রাখা ভাল । এছাড়াও, আইএমএইচও গিট সাবট্রি মার্জ কৌশলটি আরও ভাল পদ্ধতির; আমি আমার নিজস্ব প্রকল্পের জন্য সাবমডিউল পরিত্যাগ করেছি। বিদ্যমান প্রকল্পগুলির জন্য এখনও বুঝতে ভাল।
মার্ক মিকোফস্কি

আমি বেশ কয়েকটি সমাধান চেষ্টা করেছিলাম তবে আপনারাই সেরা। কেবল কমান্ড লাইন ব্যবহার করুন যাতে আপনার কোনও গিট ফাইল সংশোধন করার প্রয়োজন হয় না (এবং হওয়া উচিত নয়)। ধন্যবাদ!
nahung89

12

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

  • সাবমোডুলটিকে তার নতুন বাড়িতে নিয়ে যান।
  • .gitসাবমডিউলের কার্যক্ষম ডিরেক্টরিতে ফাইলটি সম্পাদনা করুন এবং এতে থাকা পাথটি সংশোধন করুন যাতে এটি মাস্টার সংগ্রহস্থলের ডিরেক্টরিতে সঠিক ডিরেক্টরিতে নির্দেশ করে .git/modules
  • মাস্টার সংগ্রহস্থলের .git/modulesডিরেক্টরি লিখুন এবং আপনার সাব-মডুলের সাথে সম্পর্কিত ডিরেক্টরিটি সন্ধান করুন।
  • configফাইলটি সম্পাদনা করুন, worktreeপাথটি আপডেট করে যাতে এটি সাবমডিউলের কার্যক্ষম ডিরেক্টরিটির নতুন অবস্থানের দিকে নির্দেশ করে।
  • .gitmodulesমাস্টারের সংগ্রহস্থলের গোড়ায় ফাইলটি সম্পাদনা করুন, সাবমডিউলের কার্যক্ষম ডিরেক্টরিতে পাথ আপডেট করা।
  • git add -u
  • git add <parent-of-new-submodule-directory>(এটি গুরুত্বপূর্ণ যে আপনি পিতা - মাতাকে যুক্ত করুন , এবং সাব-মডিউল ডিরেক্টরি নিজেই নয়))

কয়েকটি নোট:

  • [submodule "submodule-name"]লাইন .gitmodulesএবং .git/configএকে অপরের মেলানো, কিন্তু অন্য কিছু মিলা না।
  • সাবমডিউল ওয়ার্কিং ডিরেক্টরি এবং .gitডিরেক্টরি অবশ্যই একে অপরের দিকে নির্দেশ করবে।
  • দ্য .gitmodulesএবং .git/configফাইল সুসংগত করা উচিত।

9

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

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


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

1
এই ক্ষেত্রে git submodule syncপরিবর্তনটি .git/configস্বয়ংক্রিয়ভাবে প্রচার করে
চার্লসবি

9

আপনি কেবলমাত্র একটি নতুন সাবমডিউল যুক্ত করতে পারেন এবং স্ট্যান্ডার্ড কমান্ড ব্যবহার করে পুরানো সাবমডিউলটি সরিয়ে ফেলতে পারেন। (.git এর ভিতরে কোনও দুর্ঘটনাজনিত ত্রুটি রোধ করা উচিত)

উদাহরণস্বরূপ সেটআপ:

mkdir foo; cd foo; git init; 
echo "readme" > README.md; git add README.md; git commit -m "First"
## add submodule
git submodule add git://github.com/jquery/jquery.git
git commit -m "Added jquery"
## </setup example>

পরীক্ষার 'jquery' 'বিক্রেতার / jquery / jquery' এ যান:

oldPath="jquery"
newPath="vendor/jquery/jquery"
orginUrl=`git config --local --get submodule.${oldPath}.url`

## add new submodule
mkdir -p `dirname "${newPath}"`
git submodule add -- "${orginUrl}" "${newPath}"

## remove old submodule
git config -f .git/config --remove-section "submodule.${oldPath}"
git config -f .gitmodules --remove-section "submodule.${oldPath}"
git rm --cached "${oldPath}"
rm -rf "${oldPath}"              ## remove old src
rm -rf ".git/modules/${oldPath}" ## cleanup gitdir (housekeeping)

## commit
git add .gitmodules
git commit -m "Renamed ${oldPath} to ${newPath}"

বৃহত সাবমডিউলগুলির জন্য বোনাস পদ্ধতি:

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

উদাহরণ (একই উদাহরণ সেটআপ ব্যবহার করুন)

oldPath="jquery"
newPath="vendor/jquery/jquery"
baseDir=`pwd`
orginUrl=`git config --local --get submodule.${oldPath}.url`

# add new submodule using old submodule as origin
mkdir -p `dirname "${newPath}"`
git submodule add -- "file://${baseDir}/${oldPath}" "${newPath}"

## change origin back to original
git config -f .gitmodules submodule."${newPath}".url "${orginUrl}"
git submodule sync -- "${newPath}"

## remove old submodule
...

যদি আপনি মাথা ব্যবহার না করেন তবে আপনাকে মডিউলটির সঠিক সংস্করণও পরীক্ষা করে দেখতে হবে newPath
পৌলমনিকো

2

প্রদত্ত সমাধানটি আমার পক্ষে কার্যকর হয়নি, তবে একই ধরণের সংস্করণটি ...

এটি একটি ক্লোন করা সংগ্রহস্থল সহ, সুতরাং সাবমোডিয়াল গিট রেপো শীর্ষস্থানীয় সংগ্রহস্থলগুলিতে রয়েছে it সমস্ত কেশন শীর্ষ সংগ্রহস্থল থেকে:

  1. .Gitmodules সম্পাদনা করুন এবং প্রশ্নের মধ্যে সাবমড্যুলের জন্য "path =" সেটিংস পরিবর্তন করুন। (লেবেল পরিবর্তন করার প্রয়োজন নেই বা এই ফাইলটিকে সূচীতে যুক্ত করার দরকার নেই))

  2. .Git / মডিউল / নাম / কনফিগার সম্পাদনা করুন এবং প্রশ্নে সাবমোডুলের জন্য "worktree =" সেটিংস পরিবর্তন করুন

  3. সঞ্চালন করুন:

    mv submodule newpath/submodule
    git add -u
    git add newpath/submodule
    

আমি আশ্চর্য হয়েছি যদি ভাণ্ডারগুলি পারমাণবিক বা আপেক্ষিক সাবমডিউলগুলি হয় তবে আমার ক্ষেত্রে এটি আপেক্ষিক ছিল (সাবমডিউল / .git টপপ্রোজেক্ট / .git / মডিউল / সাবমোডিয়ুলের কাছে ফিরে আসে)


2

কেবল শেল স্ক্রিপ্ট গিট-সাবমডিউল-মুভ ব্যবহার করুন


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

2

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

  1. নিশ্চিত করুন যে সাবমডিউলটি চেক ইন হয়েছে এবং এর সার্ভারে ধাক্কা দিয়েছে। আপনার কী শাখা চালু আছে তাও আপনার জানতে হবে।
  2. আপনার আপনার সাবমডিউলটির ইউআরএল দরকার! ব্যবহার করুন more .gitmodulesকারণ একবার আপনি সাবমডিউলটি মুছে ফেললে এটি প্রায় হবে না
  3. এখন আপনি ব্যবহার করতে পারেন deinit, rmএবং তারপরsubmodule add

EXAMPLE টি

  • গিট সাবমডিউলটি এখানে: ক্লাস / লিবিব / অবশ্যই আবশ্যক
  • সরানো হচ্ছে: lib / AudioBus
  • ইউআরএল: http://developer.audiob.us/download/SDK.git

কমান্ড

    git submodule deinit Classes/lib/mustIReally
    git rm foo
    git submodule add http://developer.audiob.us/download/SDK.git lib/AudioBus

    # do your normal commit and push
    git commit -a 

দ্রষ্টব্য: গিট এমভি এটি করে না। মোটেই


3
ভাল সংক্ষিপ্তসার। git mvযদিও গীটের খুব শেষ সংস্করণে +1 ভাল হওয়া উচিত।
ভনসি

@ ভনসি আমি গিট ১.৮.৫ তে পরীক্ষা করেছি, এটি নিশ্চিত হিসাবে এটি যতটা ভাল mv। ধন্যবাদ!
ড্যান রোজনস্টার্ক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.