গিট সাবমডিউল নতুন কমিটগুলি দেখায়, সাব-মডুল স্ট্যাটাস প্রতিশ্রুতিবদ্ধ হওয়ার জন্য কিছুই বলে না


47

গিট সংগ্রহস্থলে, আমি গিথুব সংগ্রহস্থলের রেফারেন্সের জন্য আমার .গিটমডিউলগুলি ফাইল সেট আপ করেছি:

[submodule "src/repo"]
    path = src/repo
    url = repourl

আমি যখন এই রেপোতে 'গিট স্ট্যাটাস' দিই, তা দেখায়:

On branch master
Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

modified:   src/repo (new commits)

যদি আমি সিআরসি / রেপো এবং রেপোতে গিটের স্থিতিতে সিডি করি তবে এটি বলে যে প্রতিশ্রুতিবদ্ধ হওয়ার মতো কিছুই নেই।

আমার শীর্ষ স্তরের গিট রেপো কেন অভিযোগ করছে?

উত্তর:


42

এর কারণ, গিট রেকর্ডগুলি যা প্রতিশ্রুতি দেয় (কোন শাখা বা ট্যাগ নয়, SHA-1 হ্যাশগুলিতে প্রতিনিধিত্ব করা ঠিক একটি প্রতিশ্রুতি) প্রতিটি সাবমডিউলের জন্য পরীক্ষা করা উচিত। আপনি যদি সাবমডিউল দিরে কিছু পরিবর্তন করেন, গিট এটি সনাক্ত করবে এবং আপনাকে শীর্ষ-স্তরের ভাণ্ডারগুলিতে এই পরিবর্তনগুলি করার জন্য অনুরোধ করবে।

চালান git diffদেখানোর জন্য টপ লেভেল সংগ্রহস্থলের মধ্যে আসলে গীত মনে পরিবর্তিত হয়েছে। যদি আপনি ইতিমধ্যে আপনার সাবমোডিয়ুলটিতে কিছু কমিট করেছেন (সুতরাং সাবমডিউলে "পরিষ্কার") এটি সাবমডিউলের হ্যাশ পরিবর্তনের রিপোর্ট করে।

$ git diff
diff --git a/src/repo b/src/repo
index b0c86e2..a893d84 160000
--- a/src/repo
+++ b/src/repo
@@ -1 +1 @@
-Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea
+Subproject commit a893d84d323cf411eadf19569d90779610b10280

অন্যথায় এটি -dirtyহ্যাশ পরিবর্তন দেখায় যা আপনি শীর্ষ-স্তরের সংগ্রহস্থলে মঞ্চ বা প্রতিশ্রুতিবদ্ধ করতে পারবেন না। git statusএছাড়াও দাবি করে যে সাবমডিউলটিতে অন্যাক্র্যাকড / পরিবর্তিত সামগ্রী রয়েছে।

$ git diff
diff --git a/src/repo b/src/repo
--- a/src/repo
+++ b/src/repo
@@ -1 +1 @@
-Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea
+Subproject commit b0c86e28675c9591df51eedc928f991ca42f5fea-dirty

$ git status
On branch master
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)
  (commit or discard the untracked or modified content in submodules)

    modified:   src/repo (untracked content)

no changes added to commit (use "git add" and/or "git commit -a")

সাব-মডুলের জন্য কোন প্রতিশ্রুতি রেকর্ডগুলি পরীক্ষা করা উচিত তা আপডেট করতে আপনাকে সাবমডিউলে পরিবর্তনগুলি সম্পাদন করার পাশাপাশি সাব মডোড কমিট করারও প্রয়োজন:

git add src/repo

1
আমি যদি প্রধান রেপোতে কোনও কমিট যোগ করতে না চাই তবে কী হবে? আমার ব্যবহারের কেসটি হ'ল - আমার কাছে একটি প্রধান সংগ্রহশালা আছে, তারপরে আমার উইকি রয়েছে যা একটি সংগ্রহস্থল (গিটহাব এবং বিটবকেটে উপলব্ধ)। এখন আমি wikiএকটি ডিরেক্টরি উইকিতে সাব-মডুল হিসাবে যুক্ত করেছি । আমি চাই না যে আমার মূল / কোড সংগ্রহস্থলে প্রতিবিম্বিত হওয়া wiki(যেমন উইকি ডিরেক্টরি) থেকে আমার কোনও পরিবর্তন ঘটে । আমি কি আমার মূল ভান্ডারটিতে কেবল .gitmodules পথটি যুক্ত করব .gitignore? আমি এটি সম্পর্কে কিভাবে যেতে হবে?
yadav_vi

14
আমার ক্ষেত্রে আমাকে যা করতে হবে তা হ'ল মূল রেপো থেকে নিজেই সাবমডিউলটি আপডেট করা। এর মতো কিছু:git submodule update src/repo
আগস্টান আমেনাবার

19

আমি কেবল এই একই শ্রেণীর সমস্যার মধ্যে দৌড়েছি এবং আমি গ্রহণযোগ্য উত্তরের মন্তব্য বিভাগে @ অগাস্টিন আমেনাবার প্রস্তাবিত সমাধানটি ব্যবহার করতে সক্ষম হয়েছি । আমার সেটআপটি কিছুটা জটিল ছিল, তাই আমি --recursiveসমস্ত নির্ভরতা আপ টু ডেট আনার জন্য পতাকা যুক্ত করেছি ।

git submodule update src/repo --recursive

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