এই গিটপ্রো পৃষ্ঠাটি গিট সাবমড্যুলি আপডেটের ফলাফলটি সুন্দরভাবে সংক্ষিপ্ত করে তুলেছে
আপনি যখন চালান git submodule update
, এটি প্রকল্পের নির্দিষ্ট সংস্করণটি পরীক্ষা করে তবে কোনও শাখার মধ্যে নয়। একে বিচ্ছিন্ন মাথা রাখার বলা হয় - এর অর্থ হ'ল হেড ফাইলটি প্রতিশ্রুতিবদ্ধভাবে সরাসরি নির্দেশ করে, প্রতীকী রেফারেন্সকে নয়।
সমস্যাটি হ'ল আপনি সাধারণত মাথা বিচ্ছিন্ন পরিবেশে কাজ করতে চান না কারণ পরিবর্তনগুলি হারাতে সহজ ।
আপনি যদি প্রাথমিক সাবমডিউল আপডেট করেন, কাজ করার জন্য কোনও শাখা তৈরি না করেই সেই সাবমডিউল ডিরেক্টরিতে প্রতিশ্রুতি দিন এবং তারপরে গিট সাবপ্রোডিয়াল আপডেটটি সুপারপোজেক্ট থেকে আবার পরিচালনা করুন, গিট আপনাকে কিছু না বলেই আপনার পরিবর্তনগুলি ওভাররাইট করে দেবে। প্রযুক্তিগতভাবে আপনি কাজটি হারাবেন না, তবে এটির দিকে নির্দেশকারী আপনার কোনও শাখা থাকবে না, সুতরাং এটি পুনরুদ্ধার করা কিছুটা কঠিন হবে।
নোট মার্চ 2013:
" গিট সাবমডিউল ট্র্যাকিং সর্বশেষ " তে উল্লিখিত হিসাবে , এখন একটি সাবমডিউল (git1.8.2) একটি শাখা ট্র্যাক করতে পারে।
# add submodule to track master branch
git submodule add -b master [URL to Git repo];
# update your submodule
git submodule update --remote
# or (with rebase)
git submodule update --rebase --remote
" git submodule update --remote
বনামgit pull
" দেখুন।
MindTooth এর উত্তর একটি ম্যানুয়াল আপডেট চিত্রিত (স্থানীয় কনফিগারেশন ছাড়াই):
git submodule -q foreach git pull -q origin master
উভয় ক্ষেত্রে, এটি সাবমোডিয়াল রেফারেন্সগুলিকে পরিবর্তন করবে ( গিটলিংক , প্যারেন্ট রেপো সূচকে একটি বিশেষ এন্ট্রি ), এবং আপনাকে মূল রেপো থেকে রেফারেন্সগুলি যুক্ত করতে, প্রতিশ্রুতিবদ্ধ হতে এবং চাপ দিতে হবে।
পরের বার আপনি সেই প্যারেন্ট রেপোটিকে ক্লোন করবেন, এটি নতুন SHA1 রেফারেন্সগুলি প্রতিবিম্বিত করার জন্য সাবমোডিয়ুলগুলি বিশিষ্ট করবে।
এই উত্তরটির বাকী অংশে ক্লাসিক সাবমডিউল বৈশিষ্ট্য (একটি নির্দিষ্ট প্রতিশ্রুতি সম্পর্কিত রেফারেন্স , যা একটি সাবমোডিয়ুলের ধারণার পিছনে সমস্ত পয়েন্ট) বিশদের বিবরণ দেয় ।
এই সমস্যাটি এড়াতে, আপনি যখন গিট চেকআউট-বি কাজ বা সমতুল্য কিছু দিয়ে একটি সাবমডিউল ডিরেক্টরিতে কাজ করেন তখন একটি শাখা তৈরি করুন। আপনি যখন দ্বিতীয়বার সাবমডিউলটি আপডেট করবেন, এটি তখনও আপনার কাজটিকে ফিরিয়ে দেবে, তবে কমপক্ষে আপনার কাছে ফিরে আসার জন্য একটি পয়েন্টার রয়েছে।
সেগুলিতে সাবমডিউলগুলি দিয়ে শাখাগুলি স্যুইচ করাও জটিল be আপনি যদি একটি নতুন শাখা তৈরি করেন, সেখানে একটি সাবমডিউল যুক্ত করুন এবং তারপরে সেই সাবমডিউল ব্যতীত কোনও শাখায় ফিরে যেতে পারেন, আপনার এখনও সাবমডিউল ডিরেক্টরিটি একটি চিহ্নবিহীন ডিরেক্টরি হিসাবে রয়েছে:
সুতরাং, আপনার প্রশ্নের উত্তর দিতে:
আমি কীভাবে শাখাগুলি / পরিবর্তনগুলি তৈরি করতে পারি এবং ধাক্কা / টান ব্যবহার করতে পারি ঠিক তেমনভাবেই আমি নিয়মিত রেপোগুলিতে থাকি, বা কিছু জিনিস সম্পর্কে সতর্ক থাকতে হবে?
আপনি একটি শাখা তৈরি করতে পারেন এবং পরিবর্তনগুলি ঠেলাতে পারেন।
সতর্কতা ( গিট সাবমডিউল টিউটোরিয়াল থেকে ): সবসময় সাবমোডিয়াল পরিবর্তন প্রকাশের আগে (ধাক্কা) প্রকাশ করুন (ধাক্কা) সুপারপ্রজেক্টে পরিবর্তনটি উল্লেখ করে যা এটি উল্লেখ করে। আপনি যদি সাবমডিউল পরিবর্তনটি প্রকাশ করতে ভুলে যান তবে অন্যরা সংগ্রহস্থলটিকে ক্লোন করতে সক্ষম হবে না।
আমি কীভাবে সাব-মডেল রেফারেন্সড কমিটকে বলি (ট্যাগযুক্ত) ১.০ থেকে ১.১ (যদিও মূল রেপোর মাথা ইতিমধ্যে ২.০ এ রয়েছে)
" বোঝার সাবমডিউলস " পৃষ্ঠাটি সহায়তা করতে পারে
গিট সাবমডিউলগুলি দুটি চলন্ত অংশ ব্যবহার করে প্রয়োগ করা হয়:
.gitmodules
ফাইল এবং
- একটি বিশেষ ধরণের গাছের বস্তু।
এগুলি একসাথে একটি নির্দিষ্ট সংগ্রহস্থলের একটি নির্দিষ্ট সংশোধন ত্রিভঙ্গ করে যা আপনার প্রকল্পের একটি নির্দিষ্ট স্থানে পরীক্ষা করা হয়।
থেকে Git submodule পৃষ্ঠা
আপনি মূল প্রকল্পের মধ্যে থেকে সাব মড্যুলের সামগ্রীগুলি পরিবর্তন করতে পারবেন না
১০০% সঠিক: আপনি কোনও উপ-মডেলটি সংশোধন করতে পারবেন না, কেবল এর একটির কমিটকেই উল্লেখ করুন।
এ কারণেই, আপনি যখন মূল প্রকল্পের মধ্যে থেকে একটি উপ-মডেলটি পরিবর্তন করেন, আপনি:
- সাবমোডিয়ুলের (আপস্ট্রিম মডিউলে) মধ্যে প্রতিশ্রুতিবদ্ধ এবং ধাক্কা দিতে হবে , এবং
- তারপরে আপনার মূল প্রকল্পে যান, এবং পুনরায় প্রতিশ্রুতি দিন (সেই মূল প্রকল্পটির জন্য নতুন সাব-মডিউলটি আপনাকে সবেমাত্র তৈরি এবং ধাক্কা দেওয়ার জন্য প্রতিশ্রুতি দেয়)
একটি সাবমডিউল আপনাকে একটি উপাদান-ভিত্তিক পদ্ধতির বিকাশ করতে সক্ষম করে , যেখানে মূল প্রকল্পটি কেবলমাত্র অন্যান্য উপাদানগুলির নির্দিষ্ট কমিটগুলিকে বোঝায় (এখানে "উপ-মডিউল হিসাবে ঘোষিত অন্যান্য গিট সংগ্রহস্থল")।
একটি সাবমডিউল হ'ল অন্য গিট সংগ্রহস্থলের একটি চিহ্নিতকারী (প্রতিশ্রুতিবদ্ধ) যা মূল প্রকল্প বিকাশের চক্র দ্বারা আবদ্ধ নয়: এটি ("অন্যান্য" গিট রেপো) স্বাধীনভাবে বিকশিত হতে পারে।
এটি যে অন্যান্য রেপো প্রয়োজন তা প্রতিশ্রুতিবদ্ধ থেকে বাছাই মূল প্রকল্পের উপর নির্ভর করে।
তবে, আপনার সুবিধার্থে , আপনার মূল প্রকল্প থেকে সরাসরি সেই সাবমোডিয়ুলগুলির মধ্যে একটিটি সংশোধন করতে চান, গিট আপনাকে এটি করার অনুমতি দেয়, তবে আপনি প্রথমে সেগুলি মূল গিট রেপোতে সাবমডিউল পরিবর্তনগুলি প্রকাশ করেন এবং তারপরে আপনার মূল প্রকল্পটির প্রতিশ্রুতিবদ্ধ হন সাবমডিউলের একটি নতুন সংস্করণ।
তবে মূল ধারণাটি রয়ে গেছে: নির্দিষ্ট উপাদানগুলির উল্লেখ করা যা:
- তাদের নিজস্ব জীবনচক্র আছে
- তাদের নিজস্ব ট্যাগ সেট আছে
- তাদের নিজস্ব উন্নয়ন আছে
আপনি আপনার মূল প্রকল্পে উল্লেখ করছেন এমন নির্দিষ্ট কমিটের তালিকাটি আপনার কনফিগারেশনটিকে সংজ্ঞায়িত করে ( কনফিগারেশন ম্যানেজমেন্ট যা কেবল ভার্সন কন্ট্রোল সিস্টেমকে নিযুক্ত করে )
যদি আপনার মূল প্রকল্পের একই সময়ে কোনও উপাদান সত্যই বিকাশিত হতে পারে (কারণ মূল প্রকল্পে কোনও সংশোধনী উপ-ডিরেক্টরিটি সংশোধন করে এবং এর বিপরীতে জড়িত), তবে এটি আর একটি "সাবমডিউল" হবে না, তবে একটি সাবট্রি মার্জ ( সিভিএস থেকে বিতরণকৃত ভাণ্ডারগুলিতে লিগ্যাসি কোড বেস স্থানান্তরিত করার প্রশ্নেও উপস্থাপন করা হয়েছে ), দুটি গিট রেপুর ইতিহাসকে একত্রে সংযুক্ত করে।
এটি কি গিট সাবমডিউলের প্রকৃত প্রকৃতি বুঝতে সহায়তা করে?