كيف تحذف submodule من git
أريد أن أحذف 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
تم لإزالة الصب-موديول بنجاح.
أتمنى أن تكون قد استفدت من الموضوع وأخذت حذرك. إن أردت معرفة الموضوعات الجديدة بعد نشرها مباشرةً على موقع أبانوب حنا ، تابعني على يوتيوب و تيليجرام ، و فيسبوك ، و واتساب .