كيف تحذف submodule من git

· · 493 كلمة · 3 دقيقة قراءة

أريد أن أحذف git submodule من موقعي المبني بفريمورك Hugo المتخصص في إنشاء المواقع والمدونات الـ SSG أي التي يتم تجهيزها مسبقاً قبل وضعها على السيرفر (server).

أضفت ثيم theme لموقعي في شكل submodule ولكني الآن أريد إزالته. هذا الثيم هو ثيم كِمْت الذي أطوره أنا ؛ وهو ثيم مجاني ومفتوح المصدر ومتاح للجميع.

لإزالة السب-موديول اتبع هذه الخطوات بتركيز:

حذف الجزء الخاص بالسب-موديول من ملف .gitmodules 🔗

[submodule "themes/ananke"]
 path = themes/ananke
 url = https://github.com/theNewDynamic/gohugo-theme-ananke.git
-[submodule "themes/kmt"]
- path = themes/kmt
- url = https://github.com/abanoubha/gohugo-theme-kmt.git

لاحظ: السطور التي تبدأ بـ - هي الخاصة بالـ submodule التي حذفتها.

إضافة التغييرات في ملف .gitmodules إلى مدير الكود git 🔗

استخدم هذا الأمر git add .gitmodules لإضافة التغييرات في مدير الشفرات المصدرية git لتتم إضافتها فيما بعد.

أحذف الجزء الخاص بالـ submodule من ملف .git/config 🔗

[core]
 repositoryformatversion = 0
 filemode = true
 bare = false
 logallrefupdates = true
 ignorecase = true
 precomposeunicode = true
[remote "origin"]
 url = https://github.com/abanoubha/abanoubhanna-web.git
 fetch = +refs/heads/*:refs/remotes/origin/*
[branch "main"]
 remote = origin
 merge = refs/heads/main
[submodule "themes/ananke"]
 url = https://github.com/theNewDynamic/gohugo-theme-ananke.git
 active = true
[remote "codeberg"]
 url = https://codeberg.org/abanoubha/abanoubhanna-web.git
 fetch = +refs/heads/*:refs/remotes/codeberg/*
[remote "gitlab"]
 url = https://gitlab.com/abanoubha/abanoubhanna-web.git
 fetch = +refs/heads/*:refs/remotes/gitlab/*
-[submodule "themes/kmt"]
- url = https://github.com/abanoubha/gohugo-theme-kmt.git
- active = true

لاحظ: علامة الناقص - الموجودة أمام بعض السطور تدل على أني حذفت هذه السطور لأنها متعلقة بالـ submodule.

حذف الـ submodule من الكاش cache 🔗

استخدم هذا الأمر git rm --cached path_to_submodule, في حالتي الأمر يكون git rm --cached themes/kmt.

تأكد أنك لا تضع شرطة مائلة في نهاية مسار الـ submodule. أقصد أنك تكتب المسار هكذا themes/kmt وليس themes/kmt/.

إزالة كل الملفات في الـ submodule في git 🔗

استخدم الأمر rm -rf .git/modules/path_to_submodule. في حالتي يكون الأمر rm -rf .git/modules/themes/kmt.

تأكد أنك لا تضيف شرطة مائلة في نهاية مسار الـ submodule; أقصد أن تكتب المسار .git/modules/themes/kmt وليس .git/modules/themes/kmt/.

أتم إضافة التغييرات في نظام git 🔗

قم بإتمام إضافة التغييرات في نظام git من خلال الأمر git commit -m "build: removed submodule 'themes/kmt'". أعد كتابة رسالة الإضافة لتناسب ما تفعله أنت.

حذف المجلد الذي لم نعد نريده 🔗

احذف ملف ومجلد الـ submodule من خلال هذا الأمر rm -rf path_to_submodule وهو في حالتي يكون rm -rf themes/kmt.

تحديث : هناك طريقة أبسط في نظام git الأحدث 🔗

الطريقة القديمة التي استخدمناها تعمل بشكل صحيح، ولكن هذه الطريقة تعمل بشكل أبسط. يُمكنك استخدم أيهما تشاء. وإليك خطوات الطريقة الحديثة المبسطة.

  • احذف الـ submodule من ملف .git/config
git submodule deinit -f path/to/submodule
# in my case
git submodule deinit -f themes/kmt
  • احذف مجلد الـ submodule من .git/modules الخاص بالمشروع ككل
rm -rf .git/modules/path/to/submodule
# in my case
rm -rf .git/modules/themes/kmt
  • احذف الجزء الخاص بالسب-موديول من .gitmodules واحذف الملفات الموجوده في مجلد الـ submodule
git rm -f path/to/submodule
# in my case
git rm -f themes/kmt

تم لإزالة الصب-موديول بنجاح.

أتمنى أن تكون قد استفدت من الموضوع وأخذت حذرك. إن أردت معرفة الموضوعات الجديدة بعد نشرها مباشرةً على موقع أبانوب حنا ، تابعني على يوتيوب و تيليجرام ، و فيسبوك ، و واتساب .

التصنيفات: برمجة
مشاركة: