গিট সাবমডিউল সরানোর বর্তমান উপায় কী?


91

ম্যাকের উপর গিট সংস্করণ 1.9.3 (অ্যাপল গিট -50) হিসাবে আমি কীভাবে গিট সাবমডিউলটি সরিয়ে ফেলব? আমি অনেক বিকাশকারী তাদের সাথে কাজ করব না বলার সাথে প্রচুর পুরানো তথ্য পড়ছি। বর্তমান উপায় কি? হবে git deinit pathToSubModule না কৌতুক?

আমি যে পদক্ষেপগুলি নিয়ে কাজ করব তা এখানে রয়েছে তবে মন্তব্যগুলি বলে যে তারা অভ্যাস করবে না।

আমাকে আমার বর্তমান পরিস্থিতি এবং আমার কী অর্জন করতে হবে তা ব্যাখ্যা করতে দিন। আমি দ্রুত সংগ্রহস্থলটি ইনস্টল করেছি এবং এটি আমার প্রকল্পের সাব মড্যুল হিসাবে যুক্ত করেছি। এই কোডটি ইতিমধ্যে চেক ইন হয়েছে এবং অন্যরা এটি ব্যবহার করছে। আমার এখন যা করা দরকার তা হ'ল একই দ্রুত সংগ্রহস্থলটি কাঁটাচামচ করা এবং এটি আমার সংস্থার আরও সুরক্ষিত গিথুবটিতে হোস্ট করা (যাতে সম্পূর্ণ অন্য বেসরকারী গিথুব)। এটি কাঁটাচামচ করার পরে আমি সেই কাঁটাটি গিটসোবুডিয়ুল হিসাবে যুক্ত করতে চাই এবং এটি আমার ইনস্টল করা বর্তমান দ্রুত সাবমোডিয়ালটি প্রতিস্থাপন করতে দিন let

আপডেট: আমি পড়েছি যে নীচে সর্বশেষতম গিট সংস্করণে সঠিক উপায়টি দয়া করে নিশ্চিত করুন?

To remove a submodule added using:

git submodule add blah@blah.com:repos/blah.git lib/blah
Run:

git rm lib/blah
That's it.

For old versions of git (circa ~1.8.5) use:

git submodule deinit lib/blah
git rm lib/blah
git config -f .gitmodules --remove-section submodule.lib/blah

আমি দুটি দিনের জন্য সাবমডিউল সমস্যা কুস্তি করেছি। ব্রেকথ্রুটি এলো যখন আমি এটি পেয়েছি: forums.developer.apple.com/thread/13102 । মূলত, এক্সকোড এবং সম্ভবত অন্যান্য অ্যাপ্লিকেশনগুলিতে ইউআরএল'র 'containing' প্রসারিত করার জন্য সংগ্রাম করে। একবার আমি ssh পরিবর্তন করেছি: //username@server.remoteHost.com/~/git/MyRepo.git এ ssh: //username@server.remoteHost.com/home/username/git/MyRepo.git (আসল পথটি দেখুন আপনার সার্ভারে), সমস্ত অদ্ভুততা দশ মিনিটের সাথে অদৃশ্য হয়ে যায়।
এলিস ভ্যান লুইজ

উত্তর:


193

তোমার আছে git submodule deinit

git submodule deinit <asubmodule>    
git rm <asubmodule>
# Note: asubmodule (no trailing slash)
# or, if you want to leave it in your working tree
git rm --cached <asubmodule>
rm -rf .git/modules/<asubmodule>

deinit

প্রদত্ত সাবমডিউলগুলি আন-নিবন্ধভুক্ত করুন, অর্থাৎ তাদের কাজের গাছের সাথে পুরোsubmodule.$name
বিভাগটি .git/configএকসাথে সরান

আরও কল git submodule update, git submodule foreachএবং git submodule syncহবে লাফালাফি কোন অনিবন্ধিত submodules যতক্ষণ না তারা আবার সক্রিয়া করা হয়, তাই এই কমান্ড ব্যবহার করে আপনি আর আপনার কাজ গাছে submodule স্থানীয় চেকআউট আছে চাই না।

আপনি যদি সত্যিই ভাণ্ডার থেকে একটি উপ-মডেল সরিয়ে ফেলতে চান এবং git rmপরিবর্তে সেই ব্যবহারটি প্রতিশ্রুতিবদ্ধ ।

যদি --forceনির্দিষ্ট করা থাকে তবে সাবমডিউলের কাজের গাছটি স্থানীয় পরিবর্তনগুলি থাকা সত্ত্বেও সরানো হবে।


8
আমি আমার এবং অন্যান্য ব্যবহারকারীর জন্য সাবমডিউলটি পুরোপুরি মুছতে চাই। সুতরাং আমার যা দরকার তা হ'ল গিট সাবমডিউল ডিনিট অ্যাসুবডিউল; এবং গিট আরএম আসবুডিউল ?? এছাড়াও অন্যান্য ব্যবহারকারীদের সাব-মডুলটিকে ক্যাশে করা সম্পর্কে কী, তারা কি এটিকে নীচের দিকে টানানোর পরে মুছতে হবে?
j2emanue

4
আমি সাবমডিউলের স্থানীয় অনুলিপি মুছতে চেয়েছিলাম এবং এটি নিখুঁতভাবে কাজ করেছিল, সাবডির সমস্ত ফাইল চলে গেছে।
ম্যালহাল

4
আপনি rm -rf <asubmodule>ইতিমধ্যে বেস সংগ্রহস্থলের এমন কোনও সংস্করণ পরীক্ষা করে দেখেছেন যা সাব-মডেলটি নিবন্ধভুক্ত করেছে।
সারা মেসার

6

আমি গিট সংস্করণ ২.১16.২ ব্যবহার করছি এবং git rmকাজটি বেশিরভাগ ক্ষেত্রেই ভাল করে:

git rm path-to-submodule

আপনি এটি যাচাই করতে পারেন git statusএবং git diff --cachedএটি উপ-মডেলটি নির্দিষ্ট করে দেয় এবং .gitmodulesস্বয়ংক্রিয়ভাবে পরিবর্তিত হয়। সর্বদা হিসাবে, আপনি পরিবর্তন প্রতিশ্রুতিবদ্ধ করা প্রয়োজন।

যাইহোক, সাবমডিউলটি উত্স নিয়ন্ত্রণ থেকে সরানো হলেও .git/modules/path-to-submoduleএখনও সাবমডিউল সংগ্রহস্থল এবং .git/configএর ইউআরএল রয়েছে, তাই আপনাকে এখনও সেগুলি ম্যানুয়ালি অপসারণ করতে হবে:

git config --remove-section submodule.path-to-submodule
rm -rf .git/modules/path-to-submodule

সাবমডিউল সংগ্রহস্থল এবং কনফিগারেশন রাখা ইচ্ছাকৃত যাতে আপনি উদাহরণস্বরূপ অপসারণটিকে পূর্বাবস্থায় ফিরিয়ে আনতে পারেন git reset --hard


4
সর্বাধিক সাম্প্রতিক উত্তর এবং সংক্ষিপ্ত সমাধান
টার্বোগুমা 21

3

কীভাবে একটি সাবমডিউল নিরাপদে অপসারণ করবেন।

( https://stackoverflow.com/a/1260982/342794 এ যোগ করুন )

  1. .gitmodulesফাইলের সাবমডিউল বিভাগটি তালিকাবদ্ধ করুন এবং সনাক্ত করুন। টার্মিনাল মাধ্যমে বলুন vi .gitmodules। উদাহরণ:

    [submodule "submodules/afnetworking"]
        path = submodules/afnetworking
        url = https://github.com/CompanyName/afnetworking.git
    
  2. স্থানীয় কাঁটাচামচ সহ সাবমডিউলগুলি ব্যবহার করা যেতে পারে। দীর্ঘ চলমান প্রকল্পগুলির জন্য, কোডটি মূল রেপো থেকে পৃথক হতে পারে এবং কিছু সংশোধন করতে পারে। সাবমোডল কোডটি প্রকল্পের কোর্সের পরিবর্তনের মধ্য দিয়ে গেছে কিনা তা যাচাই করা ভাল ধারণা। উদাহরণ: লগগুলি দেখুন, যদি এটি masterশাখা বা কোনও স্থানীয় শাখায় নির্দেশ করে । টার্মিনালের মাধ্যমে সম্পন্ন পরিবর্তনগুলি খুঁজতে গিট লগগুলি অন্বেষণ করা। সাধারণত এগুলি একটি ডিরেক্টরিতে অন্তর্ভুক্ত থাকে, উদাহরণস্বরূপ, submodulesডিরেক্টরিতে।

    User$ cd submodules/afnetworking
    User$ git log
    
  3. .Gitmodules থেকে সাবমডিউল বিভাগটি সরান, ফাইলটি সংরক্ষণ করুন। উদাহরণ: git statusপরিবর্তিত হিসাবে কেবল নিম্নলিখিতটি দেখানো উচিত

    modified:   .gitmodules
    
  4. এর সাথে পরিবর্তনগুলি পর্যায়িত করুন git add .gitmodules

  5. .git/configফাইলগুলিতে সাব-মডিউল বিভাগটি তালিকাবদ্ধ করুন এবং সনাক্ত করুন । টার্মিনাল মাধ্যমে বলুন vi .git/config। উদাহরণ:

    [submodule "submodules/afnetworking"]
        url = https://github.com/CompanyName/afnetworking.git
    
  6. গিট ক্যাশে sobmodule ফাইলগুলি সরান। চলমান git rm --cached submodules/afnetworking(কোনও পিছনে স্ল্যাশ নেই) এটি সফলভাবে সরিয়ে ফেলবে। উদাহরণ:

    User$ git rm --cached submodules/afnetworking
    rm 'submodules/afnetworking'    <-- terminal output
    
  7. .gitডিরেক্টরি সহ সাবমডিউল ফাইলগুলি সরান rm -rf .git/modules/...। এটির git statusপরে নিশ্চিত করুন ।

    User$ rm -rf .git/modules/submodules/afnetworking/
    User$ git status
    On branch feature/replace-afnetworking-submodule-with-pod
    Changes to be committed:
      (use "git reset HEAD <file>..." to unstage)
        modified:   .gitmodules
        deleted:    submodules/afnetworking
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        submodules/afnetworking/
    
  8. পরিবর্তনগুলি প্রতিশ্রুতিবদ্ধ। git statusপরে নিশ্চিত করুন ।

    User$ git commit -m "Remove submodule afnetworking"
    [feature/replace-afnetworking-submodule-with-pod 70e239222] Remove submodule afnetworking
    2 files changed, 4 deletions(-)
      delete mode 160000 submodules/afnetworking
    User$ git status
    On branch feature/replace-afnetworking-submodule-with-pod
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
        submodules/afnetworking/
    nothing added to commit but untracked files present (use "git add" to track)
    
  9. আনক্র্যাকড সাবমডিউল ফাইলগুলি মুছুন।

    User$ rm -rf submodules/afnetworking
    
  10. এক্সকোড প্রকল্প থেকে তথ্যগুলি মুছুন। সংকলন এবং রানটাইম সমস্যাগুলি তৈরি করুন, ঠিক করুন।

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