গিট সাবমডিউল ধাক্কা


128

আমি যদি একটি সাবমডিউলটি সংশোধন করি তবে আমি কি প্রতিশ্রুতিটি সাবমোডুল উত্সে ফিরে যেতে পারি, বা এর জন্য কোনও ক্লোন প্রয়োজন? যদি ক্লোন হয় তবে আমি কি অন্য কোনও ভান্ডারের ভিতরে ক্লোন রাখতে পারি?


4
গিট 2.7 (জানুয়ারী 2016) এর সাথে, আপনাকে কেবল একবার সেট করতে হবে git config push.recurseSubmodules on-demand। তারপরে একটি সাধারণ সমস্ত কিছুর (মূল রেপো এবং সাবমডিউল) git pushধাক্কা দিতে যথেষ্ট হবে । দেখুন নীচের আমার সম্পাদিত উত্তর
ভোনসি

আপনি যা করতে চেষ্টা করছেন তার জন্য দয়া করে নমুনা কোড সরবরাহ করুন।
সিরো সান্তিলি 郝海东 冠状 病 六四 事件 法轮功

উত্তর:


138

একটি সাবমডিউল কিছু অতিরিক্ত মেটা ডেটা (গিটলিংক ট্রি এন্ট্রি, .গিটমডিউল ফাইল) সহ অন্য রেপোর মধ্যে গিট রেপোর ক্লোন ছাড়া কিছুই নয় is

$ cd your_submodule
$ git checkout master
<hack,edit>
$ git commit -a -m "commit in submodule"
$ git push
$ cd ..
$ git add your_submodule
$ git commit -m "Updated submodule"

1
হ্যাঁ, এবং চাপ দেওয়ার আগে আপনার সিঙ্ক্রোনাইজড স্থানীয় শাখা (যদি থাকে তবে) থেকে পরিবর্তন আনতে ভুলবেন না। ঘটে উদাঃ। gh-pages
গিথুব রেপোতে

আমি বুঝতে পারছি না কীভাবে আপনার_সুবমডুল যুক্ত করার আগে আপনি আপনার_সুবমডুল সিডি করতে পারেন? আমি সাব-মডুল যুক্ত করার সর্বোত্তম উপায় হ'ল "অ্যাড" গিট কমান্ডটি ব্যবহার করে। তাহলে কি সাবমডিউল যুক্ত করার অন্য কোনও উপায় আছে?
মিস্টারসো

1
@ মিঃসো আমার কাছে মনে হয় সাবমডিউলটি ইতিমধ্যে রয়েছে, তিনি সাবমডিউলে কিছু পরিবর্তন করার জন্য এটিতে সিড করছেন।
হ্যাট্রিকএনজেড

108

নোট করুন যে git1.7.11 সাল থেকে ( [ঘোষণা করা] গিট 1.7.11.rc1 এবং রিলিজ নোট , জুন ২০১২) উল্লেখ করেছে:

" git push --recurse-submodules" সুপারপ্রজেক্টের সাথে আবদ্ধ সাবমডিউলের ইতিহাসগুলি optionচ্ছিকভাবে অনুসন্ধান করতে এবং সেগুলি সরিয়ে দিতে শিখেছেন।

সম্ভবত এই প্যাচ এবং --on-demandবিকল্প পরে সম্পন্ন :

recurse-submodules=<check|on-demand>::

নিশ্চিত হয়ে নিন যে ধাক্কা দেওয়ার জন্য সংশোধনগুলি দ্বারা ব্যবহৃত সমস্ত সাব-মডিউল কমিটগুলি দূরবর্তী ট্র্যাকিং শাখায় উপলব্ধ।

  • যদি checkএটি ব্যবহার করা হয় তবে এটি পরীক্ষা করা হবে যে ধাক্কা দেওয়ার জন্য পরিবর্তিত সমস্ত সাবমোডিয়াল কমিটগুলি রিমোটে উপলব্ধ।
    অন্যথায় ধাক্কাটি বাতিল হয়ে যাবে এবং অ-শূন্য স্থিতি সহ প্রস্থান করবে।
  • যদি on-demandব্যবহার করা হয় তবে সমস্ত সাবমোডিয়ালগুলি যা ধাক্কা দেওয়ার জন্য সংশোধনগুলিতে পরিবর্তিত হয়েছিল তা ধাক্কা দেওয়া হবে।
    অন-ডিমান্ড যদি সমস্ত প্রয়োজনীয় সংশোধনগুলি ঠেলে দিতে না সক্ষম হয় তবে এটিও বাতিল হয়ে যাবে এবং শূন্য-স্থিতি ছাড়াই প্রস্থান করা হবে।

সুতরাং আপনি সমস্ত কিছু এক সাথে যেতে পারেন (প্যারেন্ট রেপো থেকে) একটি:

git push --recurse-submodules=on-demand

এই বিকল্পটি কেবল নীড়ের এক স্তরের জন্য কাজ করে। অন্য সাবমোডিয়ুলের অভ্যন্তরীণ সাবমডিউলে পরিবর্তনগুলি ধাক্কা দেওয়া হবে না।


গিট ২.7 (জানুয়ারী ২০১)) এর সাথে, পিতামাতার রেপোগুলিকে ... এবং সমস্ত কিছুর জন্য একটি সাধারণ গিট পুশ যথেষ্ট সাবমডিয়ুলগুলি

দেখুন d34141c কমিট , f5c7cd9 কমিট (03 ডিসেম্বর 2015) f5c7cd9 কমিট (03 ডিসেম্বর 2015), এবং b33a15b কমিট (17 নভেম্বর 2015) দ্বারা মাইক ক্রো ( mikecrowe)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 5d35d72 , 21 ডিসেম্বর 2015)

push: যোগ করুন recurseSubmodules কনফিগার বিকল্প

দ্য --recurse-submodulesকমান্ড লাইন প্যারামিটার কিছু সময়ের জন্য অস্তিত্ব হয়েছে কিন্তু এটা কোন কনফিগ ফাইল সমতুল্য হয়েছে।

এর সাথে সম্পর্কিত প্যারামিটারের স্টাইল অনুসরণ করে git fetchআসুন push.recurseSubmodulesএই প্যারামিটারের জন্য একটি ডিফল্ট সরবরাহ করার জন্য উদ্ভাবন করি ।
এটির জন্য সংযোজনও প্রয়োজন--recurse-submodules=no কনফিগারেশনটি কমান্ড লাইনে ওভাররাইড করার প্রয়োজন হলে সংযোজনও প্রয়োজন।

এটি কার্যকর করার সর্বাধিক সোজা উপায় হ'ল একইভাবে pushব্যবহার কোড তৈরি submodule-configকরা fetch

git configডক এখন অন্তর্ভুক্ত :

push.recurseSubmodules:

নিশ্চিত হয়ে নিন যে ধাক্কা দেওয়ার জন্য সংশোধনগুলি দ্বারা ব্যবহৃত সমস্ত সাব-মডিউল কমিটগুলি রিমোট-ট্র্যাকিং শাখায় উপলব্ধ।

  • মান যদি হয় 'check ' হয় তবে গিট যাচাই করবে যা ধাক্কা দেওয়ার জন্য পরিবর্তনগুলি পরিবর্তিত সমস্ত সাবমোডিয়াল কমিট সাবমোডেলের কমপক্ষে একটি রিমোটে উপলব্ধ। যদি কোনও কমিট অনুপস্থিত থাকে তবে ধাক্কাটি বাতিল হয়ে যাবে এবং শূন্য-স্থিতি ছাড়াই প্রস্থান করবে exit
  • মান যদি হয় 'on-demand ' হয় তবে সমস্ত সাবমোডিয়ালগুলি যা ধাক্কা দেওয়ার জন্য সংশোধনগুলিতে পরিবর্তিত হয়েছিল তা ধাক্কা দেওয়া হবে। অন-ডিমান্ড যদি সমস্ত প্রয়োজনীয় সংশোধনগুলি ঠেলে দিতে না সক্ষম হয় তবে এটিও বাতিল হয়ে যাবে এবং শূন্য-স্থিতি ছাড়াই প্রস্থান করা হবে। -
  • মান যদি হয় 'no ' হয় তবে চাপ দেওয়ার সময় সাবমডিউলগুলিকে উপেক্ষা করার ডিফল্ট আচরণ বজায় থাকে।

' --recurse-submodules=check|on-demand|no' নির্দিষ্ট করে ধাক্কা দেওয়ার সময় আপনি এই কনফিগারেশনটিকে ওভাররাইড করতে পারেন ।

তাই:

git config push.recurseSubmodules on-demand
git push

গিট 2.12 (Q1 2017)

git push --dry-run --recurse-submodules=on-demand আসলে কাজ করবে।

কম্যান্ড 0301c82 দেখুন , প্রতিশ্রুতি দিন 1aa7365 (17 নভেম্বর 2016) ব্র্যান্ডন উইলিয়ামসmbrandonw দ্বারা ( )
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 12cf113 , 16 ডিসেম্বর 2016)

push run with --dry-runপ্রকৃতপক্ষে (গিট ২.১১ ডিসেম্বর, ২০১ and এবং নিম্ন / পূর্বে) ড্রাই-রান সঞ্চালন করে যখন চাহিদা অনুযায়ী সাব-মডিউলগুলি ধাক্কা দেওয়ার জন্য কনফিগার করা হয়।
পরিবর্তে সমস্ত সাবমোডিয়ালগুলিকে যা ধাক্কা দেওয়ার দরকার হয় সেগুলি আসলে তাদের রিমোটগুলিতে ঠেলে দেওয়া হয় যখন সুপারপ্রজেক্টের জন্য কোনও আপডেট একটি ড্রাই-রান হিসাবে সঞ্চালিত হয়।
এটি একটি বাগ এবং শুকনো রানের উদ্দেশ্যমূলক আচরণ নয়।

পুনরাবৃত্তভাবে সাব-মডিউলগুলিকে 'অন-ডিমান্ড' ধাক্কা দেওয়ার জন্য কনফিগার করা হলে বিকল্পটিকে pushসম্মান করতে শেখান --dry-run
এটি --dry-runশিশু প্রক্রিয়াতে পতাকা প্রেরণ দ্বারা সম্পন্ন করা হয় যা একটি শুকনো রান সঞ্চালনের সময় সাবমডিউলগুলির জন্য একটি ধাক্কা দেয়।


এবং এখনও গিট 2.12-এ, আপনি এখন শীর্ষ স্তরের সুপারপ্রজেক্টটি না ধাক্কা দিয়ে সাবমোডিয়ালগুলি বাইরে ধাক্কা দেওয়ার " --recurse-submodules=only" বিকল্প পেয়েছেন ।

দেখুন 225e8bf কমিট , 6c656c3 কমিট , কমিট 14c01bd দ্বারা (19 ডিসেম্বর 2016) : Brandon উইলিয়ামস ( mbrandonw)
(দ্বারা একীভূত junio সি Hamano - gitster- মধ্যে কমিট 792e22e , 31 জানুয়ারী 2017)


এটি এখন পাওয়া যায় তাই না?
সিএমসিডিগ্রাগনকাই

@ সিএমসিডিগ্রাগনকাই হ্যাঁ এটি আপনি এটি দেখতে পারেন git-scm.com/docs/git-push এ । আমি উত্তর সম্পাদনা করেছি।
ভোনসি

একটি পুনরাবৃত্তি প্রতিশ্রুতি আছে?
সিএমসিডিগ্রাগনকাই

1
আপনি সর্বদা 'গিট
সাবমডিউল ফোরচ

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