(গিট 2.22, কিউ 2 2019, চালু হয়েছে git submodule set-branch --branch aBranch -- <submodule_path>
)
মনে রাখবেন যে আপনার যদি একটি বিদ্যমান সাবমডিউল থাকে যা এখনও কোনও শাখা ট্র্যাক করছে না , তবে ( যদি আপনার 1.8.2+ গিট থাকে ):
নিশ্চিত হয়ে নিন যে পিতামাতার রেপো জানেন যে এর সাব-মডুল এখন একটি শাখা ট্র্যাক করে:
cd /path/to/your/parent/repo
git config -f .gitmodules submodule.<path>.branch <branch>
আপনার সাবমডিউলটি সেই শাখার সর্বশেষে রয়েছে তা নিশ্চিত করুন:
cd path/to/your/submodule
git checkout -b branch --track origin/branch
# if the master branch already exist:
git branch -u origin/master master
( 'মূল' নামে হচ্ছে রেপো মূল প্রজেক্টের দূরবর্তী submodule থেকে। ক্লোন করা হয়েছে
একটি git remote -v
ভিতরে যে submodule প্রদর্শন করব। সাধারণত, এটা হল 'উৎপত্তি')
আপনার প্যারেন্ট রেপোতে আপনার সাবমডিউলের নতুন স্থিতি রেকর্ড করতে ভুলবেন না:
cd /path/to/your/parent/repo
git add path/to/your/submodule
git commit -m "Make submodule tracking a branch"
পরবর্তী সাবমডিউলের জন্য পরবর্তী আপডেটের --remote
বিকল্পটি ব্যবহার করতে হবে :
# update your submodule
# --remote will also fetch and ensure that
# the latest commit from the branch is used
git submodule update --remote
# to avoid fetching use
git submodule update --remote --no-fetch
দ্রষ্টব্য যে গিট 2.10+ (Q3 2016) দিয়ে আপনি ' .
' একটি শাখার নাম হিসাবে ব্যবহার করতে পারেন :
শাখার নামের নথিভুক্ত করা হয় submodule.<name>.branch
মধ্যে .gitmodules
জন্য update --remote
।
এর একটি বিশেষ মান .
ব্যবহৃত হয় যা উপস্থাপকের শাখার নামটি বর্তমান সংগ্রহস্থলের বর্তমান শাখার একই নাম হওয়া উচিত ।
কিন্তু, যেমন মন্তব্য দ্বারা LubosD
এর সাথে git checkout
, যদি অনুসরণ করা শাখার নাম " .
" হয়, এটি আপনার আপত্তিজনক কাজটিকে হত্যা করবে! পরিবর্তে
ব্যবহার git switch
করুন।
এর অর্থ গিট 2.23 (আগস্ট 2019) বা তারও বেশি।
" বিভ্রান্ত হয়েgit checkout
" দেখুন
আপনি যদি একটি শাখাকে অনুসরণ করে আপনার সমস্ত সাবমডিউল আপডেট করতে চান:
git submodule update --recursive --remote
নোট করুন যে প্রতিটি আপডেট হওয়া সাবমডিউলের জন্য ফলাফলটি সর্বদা সর্বদা একটি বিচ্ছিন্ন মাথা হয়ে উঠবে , ড্যান ক্যামেরন তার উত্তরে নোট হিসাবে ।
( ক্লিন্টম মন্তব্যগুলিতে নোট করেছেন যে, আপনি যদি চালান git submodule update --remote
এবং ফলাফল শ 1 যদি সাবমডিউলটি বর্তমানে চালু শাখার সমান হয় তবে এটি কিছুই করবে না এবং সাবমোডুলটিকে এখনও "সেই শাখায়" রেখে যাবে এবং মাথা বিচ্ছিন্ন অবস্থায় থাকবে না)। )
শাখাটি আসলে চেক আউট হয়েছে তা নিশ্চিত করার জন্য (এবং এটি প্যারেন্ট রেপোর জন্য সাবমডিউলের প্রতিনিধিত্বকারী বিশেষ এন্ট্রির SHA1 সংশোধন করবে না ), তিনি পরামর্শ দিয়েছেন:
git submodule foreach -q --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; git switch $branch'
প্রতিটি সাবমডিউল এখনও একই SHA1 কে রেফারেন্স করবে, তবে আপনি যদি নতুন কমিট করেন তবে আপনি তাদের ঠেলাতে সক্ষম হবেন কারণ আপনি যে শাখার দ্বারা সাবমডিউলটিকে ট্র্যাক করতে চান সেগুলি তাদের দ্বারা রেফারেন্স করা হবে।
একটি সাবমোডিয়ুলের মধ্যে সেই চাপ দেওয়ার পরে, সেই সংশোধিত সাবমোডিয়ুলের জন্য নতুন এসএএএ 1 যুক্ত করতে, প্রতিশ্রুতিবদ্ধ এবং পুশ করতে পুনরায় পেন্টো রেপোতে যেতে ভুলবেন না।
উল্লেখ্য ব্যবহার $toplevel
, প্রস্তাবিত মন্তব্য দ্বারা আলেকজান্ডার Pogrebnyak ।
$toplevel
২০১০ সালের মে মাসে git1.7.2 এ চালু হয়েছিল: f030c96 কমিট করুন ।
এটিতে শীর্ষ স্তরের ডিরেক্টরি (যেখানে .gitmodules
রয়েছে) এর পরম পথ রয়েছে ।
dtmland
মন্তব্যে যোগ করুন :
ফোরচ স্ক্রিপ্ট সাবমোডিয়ুলগুলি শাখা অনুসরণ করছে না তা চেকআউট করতে ব্যর্থ হবে।
যাইহোক, এই আদেশ আপনাকে উভয় দেয়:
git submodule foreach -q --recursive 'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; [ "$branch" = "" ] && git checkout master || git switch $branch' –
একই কমান্ড কিন্তু পড়া সহজ:
git submodule foreach -q --recursive \
'branch="$(git config -f $toplevel/.gitmodules submodule.$name.branch)"; \
[ "$branch" = "" ] && \
git checkout master || git switch $branch' –
umläute রিফাইন dtmland করা একটি সরলীকৃত সংস্করণ কমান্ড মন্তব্য :
git submodule foreach -q --recursive 'git switch $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
একাধিক লাইন:
git submodule foreach -q --recursive \
'git switch \
$(git config -f $toplevel/.gitmodules submodule.$name.branch || echo master)'
গিট 2.26 (কিউ 12020) এর আগে, সাবমোডিয়ুলগুলিতে পুনরাবৃত্তভাবে আপডেট আনতে বলা হয়েছিল এমন একটি আনয়ন অনিবার্যভাবে আউটপুটের পুনরায় উত্পাদন করে এবং ত্রুটি বার্তাগুলি স্পষ্ট করা শক্ত হয়ে যায়।
কমান্ডটি সাব-মডিউলগুলি গণনা করতে শেখানো হয়েছে যা অপারেশন শেষে ত্রুটি করেছিল ।
দেখুন কমিট 0222540 দ্বারা (16 জানুয়ারী 2020) এমিলি Shaffer ( nasamuffin
) ।
(দ্বারা একীভূত junio সি Hamano - gitster
- মধ্যে b5c71cc কমিট , 05 ফেব্রুয়ারী 2020)
fetch
: সাবমডিউল আনার সময় ব্যর্থতার উপর জোর দিন
সাইন-অফ-বাই: এমিলি শেফার
অনেকগুলি সাবমডিউল থাকা অবস্থায় যখন সাবমডিউল আনতে ব্যর্থ হয় তবে একাধিক আনুষঙ্গিক ঘটনা ফিরে এলে অন্য সাবমোডিয়ুলগুলিতে ক্রিয়াকলাপের অধীনে লোন ব্যর্থ সাবমডিউল আনতে ত্রুটিটি সমাহিত করা হয় fetch-by-oid
।
দেরি করে একটি ব্যর্থতা ডাকুন যাতে ব্যবহারকারী সচেতন হন যে কিছু ভুল হয়েছে এবং কোথায় ।
কারণ fetch_finish()
কেবল run_processes_parallel,
মাইটেক্সিংয়ের মাধ্যমে সিঙ্ক্রোনালি বলা হয় চারপাশের প্রয়োজন হয় না submodules_with_errors
।