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


213

আমি এমন একটি রেপো তৈরি করতে চাই যা দূরবর্তী রেপোতে টান দেয়।

উদাহরণস্বরূপ, আসুন jQuery কে সাব-মডিউল হিসাবে বলি:

git://github.com/jquery/jquery.git

সাব-মডিউল হিসাবে jQuery এর সাথে একটি রেপো তৈরি এবং দূরবর্তী রেপো হিসাবে আমার নিজের বাহ্যিক যুক্ত করার প্রক্রিয়াটি কী হবে?

এছাড়াও একবার এটি সেটআপ হয়ে গেলে, আমি যদি নিজের দূরবর্তীটিতে ধাক্কা / টান করি, তবে বাহ্যিক অক্ষত থাকবে?


1
যখন আপনি "টান ইন" বলছেন আপনি কি বলছেন যে আপনি চান jQuery রেপো আপনার নিজের রেপোর সাবমডিউল?
ezod

হ্যাঁ ঠিক আছে, দুঃখিত যদি এটি পরিষ্কার না হয়। আমার নিজের দূরবর্তী
টম

উত্তর:


343
  1. আপনার একটি প্রকল্প আছে - এটিকে MyWebApp বলুন যা ইতিমধ্যে একটি গিথুব রেপো রয়েছে
  2. আপনি আপনার প্রকল্পে jquery সংগ্রহস্থল ব্যবহার করতে চান
  3. আপনি আপনার প্রকল্পের সাব-মডিউল হিসাবে jquery রেপো টানতে চান ।

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

cd MyWebApp
git submodule add git://github.com/jquery/jquery.git externals/jquery

এটি externals/jquery* নামের একটি ডিরেক্টরি তৈরি করবে এবং এটি গিথুব জ্যাকোয়ারি সংগ্রহস্থলের সাথে লিঙ্ক করবে। এখন আমাদের কেবল সাব-মডিউলটি শুরু করতে হবে এবং এতে কোডটি ক্লোন করতে হবে:

git submodule update --init --recursive

আপনার এখন সর্বশেষ কোডটি সাবমডিউলে ক্লোন করা উচিত। যদি jquery রেপো পরিবর্তন হয় এবং আপনি সর্বশেষ কোডটি নীচে টানতে চান তবে কেবল submodule updateকমান্ডটি আবার জারি করুন । দয়া করে নোট করুন: আমার প্রকল্পগুলিতে আমার বেশিরভাগ বহিরাগত সংগ্রহস্থল থাকে, তাই আমি সর্বদা "বহিরাগত" ডিরেক্টরিতে রেপোগুলিকে গ্রুপ করি।

অনলাইন প্রো গিট বইতে সহজেই পড়তে সহজ ফ্যাশনে উপস্থাপিত (এবং সাধারণভাবে গিট) সম্পর্কিত কিছু ভাল তথ্য রয়েছে। পর্যায়ক্রমে, git help submoduleভাল তথ্য দেবে। অথবা গিট উইকের গিট সাবমডিউল টিউটোরিয়ালটি একবার দেখুন ।

আমি এই ব্লগে এন্ট্রি যা submodules সম্পর্কে আলোচনা এবং তাদের Subversion এর SVN তুলনা খেয়াল: বহির্ভাগ প্রক্রিয়া: http://speirs.org/blog/2009/5/11/understanding-git-submodules.html

* সেরা অনুশীলন হিসাবে আপনার সর্বদা আপনার সাবমডিউলগুলি তাদের নিজস্ব ডিরেক্টরিতে যেমন এক্সটার্নালগুলিতে স্থাপন করা উচিত। যদি আপনি এটি না করেন তবে আপনার রুট প্রকল্প ডিরেক্টরিটি খুব দ্রুত বিশৃঙ্খলাতে পরিণত হতে পারে।


4
দুর্দান্ত ব্যাখ্যা! :) এছাড়াও, "গিট হেল্প সাবমডিউলস" সাহায্য করে যদি আপনি আরও কিছু বিশদ, অভ্যন্তরীণ ইত্যাদি চান তবে
নটহাগো

2
ধন্যবাদ, ঠিক আমার যা দরকার ছিল।
মাইকচিনকেল

1
@ শেভী এটি আপনার প্রয়োজনীয়তার উপর নির্ভর করে। সাধারণভাবে, আপনার প্রকল্পে একটি গিট প্রকল্পকে সাবমডিউল হিসাবে যুক্ত করা এমন প্রকল্পগুলির জন্য প্রায়শই ভাল সমাধান যা প্রায়শই পরিবর্তিত হয় বা এখনও বিকাশে থাকে। এটি আপনাকে সহজেই নিশ্চিত করতে দেয় যে আপনার প্রকল্পের সমস্ত তৃতীয় পক্ষের কোডটি আপ টু ডেট। তৃতীয় পক্ষের কোডের জন্য যা মূলত স্থিতিশীল - স্থিতিশীল, পরিপক্ক কোড যা সম্ভবত সংস্করণ থেকে সংস্করণে খুব বেশি পরিবর্তন ঘটবে না - সাবমডিউল ব্যবহার করে খুব বেশি মান দেওয়া হয় না।
স্মরণে

2
দুঃখিত তবে এসএনএন এক্সটার্নালগুলির সাথে তুলনা করা, এটি এত সহজ নয়
কেয়েল

2
@ কিল এটি দুটি কমান্ড, git submodule addএবং git submodule update... এটি কতটা সহজ হতে পারে তা আমি নিশ্চিত নই।
স্মারক

24

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

আপনারা জানেন যে, "গিট টান" সাবমোডিয়ুলগুলি আপডেট করবে না এবং "গিট সাবমডিউলস আপডেট" সেগুলি সাবমডিউলগুলির সর্বশেষতম হেড ডাউনলোড করবে না।

আপনার সমস্ত সাবমোডিয়ুলগুলিকে তাদের সর্বশেষতম প্রবাহের পুনর্বিবেচনায় আপডেট করতে আপনি ব্যবহার করতে পারেন

git submodule foreach git pull

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


2

শেষের দিকে আমি http://github.com/evilchelu/braid এ পেয়েছি মনে হয়েছিল যে আমি কীভাবে সাবমডিউলগুলি এবং রিমোটগুলি কাজ করেছিলাম তার সাথে এটি খাপ খায়


0

আমি মনে করি @ হুগো উত্তরটি আপনার যা প্রয়োজন তা হতে পারে এবং ভাল কাজ করে। সুতরাং আমি একটি সহজ উপায় খুঁজে পেয়েছি।

git submodule update --remote

এখানেই শেষ.

সুতরাং একটি সম্পূর্ণ কর্মপ্রবাহ হতে পারে:

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