سؤال

مشكلة: لإضافة ملفات في ./shells/smallApps/* إلى git at. ./.git/ عندما لا أملك الملفات في ./.git/info/exclude ولا في أي .gitignore -إفسات.

ويستند هذا السؤال هذا المداس حيث لا يتم حل المشكلة بالكامل.

انا اجري

$git status                                                                                                                                          ~/bin
# On branch master
nothing to commit (working directory clean)
$git ls-files                                                                                                                                        ~/bin
Screen/dev/vim-open.screen
--- cut ---

لاحظ أنه ليس لدي ملفات "قذائف / SHALLAPPS / *" في GIT

$ls shells/smallApps/                                                                                                                                ~/bin
devTodo     extract     
                                                                                                                                             ~/bin

أريد إضافتها إلى GIT الخاص بي عن طريق تشغيل

$git add shells/smallApps/devTodo shells/smallApps/extract
fatal: Path 'shells/smallApps/devTodo' is in submodule 'shells/smallApps'
$git add .         

لاحظ أن الملفات لا تتم إضافتي إلى جيت لسبب ما بحيث

$git status                                                                                                                                          ~/bin 
# On branch master
nothing to commit (working directory clean)

ليس لدي الملفات في .git / info / استبعاد ولا في. gitignore -files.

ماذا يعني التحذير الأخير؟

هل كانت مفيدة؟

المحلول

تحديث

هناك نوعان من الأسباب العامة لأن GIT ستجاهل ملف: gitignore و submodules.

لتكون أكثر تحديدا، سوف تسبب الشروط التالية git لتجاهل ملف عندما "git add"تم استدعاء:

  1. الملف يطابق نمط $GIT_DIR/exclude.
  2. الملف يطابق نمط في .gitignore ملف داخل الريبو.
  3. ينطوي الملف على نمط في مستخدم خاص .gitignore ملف (المحدد بواسطة 'git config --global core.excludesfile').
  4. الملف هو جزء من التنويم.

إجبار 'git add"في ملف تجاهل:

يمكنك التحقق لمعرفة ما إذا تم تجاهل ملف معين من خلال الاحتجاج "git add full/path/to/file'.

تنص صفحة الرجل ذلك "إذا تم تحديد ملف تم تجاهله بشكل صريح في سطر الأوامر، فسوف يفشل الأمر مع قائمة الملفات التي تم تجاهلها."

إذا تم تجاهل الملف، يمكنك إجباره على إضافته مع "git add --force full/path/to/file'.

تعليمات للقضاء على مرجع نقل:

كما لوحظ في إجابة سابقة، shells/smallApps هو نقل في مستودع الخاص بك.

إذا كان الملف جزءا من مجموعة من المنطقية، فإن الوضع أكثر تعقيدا. لا يمكنك تعديل محتويات المناسبات من خلال المشروع الرئيسي.

إذا كنت ترغب في القضاء على مرجع المنفوعات وتتبع الملفات مباشرة في Repo الرئيسية، فهناك عدة خطوات يجب إجراءها. لا يمكنك ببساطة إزالة دليل ".git" من المنقطات. هناك ثلاثة روابط بين مستودعك الرئيسي والشعور:

  1. ال .gitmodules ملف في الريبو الرئيسي الخاص بك.
  2. دخول في .git/config من الريبو الرئيسي الخاص بك.
  3. أي ارتكب مرتبط بالناس في تاريخ الريبو الرئيسي.

لكل هذا ذات الصلة حتى السؤال, ، تحتاج إلى تنفيذ الخطوات التالية لإزالة الوحدة الفرعية بالكامل:

ملاحظة: إذا كان فرعا آخر يعتمد على هذه المنوطة، فيمكنه إزالة المستودع الخاص بك! هذه عملية خطيرة ... استخدم بحذر.

  1. حذف الخط ذي الصلة من .gitmodules ملف.
  2. حذف القسم ذي الصلة من .git/config.
  3. يركض git rm --cached path_to_submodule (لا مائل زائدة).
  4. ارتكب

تعرضت الملفات التي كانت جزءا من المنقطات الآن وقد تقرر الاحتفاظ بها أو حذفها حسب الرغبة (مع تحذير واحد المذكورة أدناه).

إذا لم تكن بحاجة إلى هذه الملفات، فقد تقوم ببساطة بحذفها.

مذكرة قانونية: إذا كنت ترغب في الحفاظ على هذه الملفات (التي يبدو أنها تريدها)، فيجب عليك إزالتها يدويا .git دليل من المجلد المنطقي:

  1. cd path_to_submodule
  2. rm .git
  3. cd ..
  4. git add path_to_submodule
  5. git status
  6. git commit

تحديث:

طلب مزيد من المعلومات:

للمساعدة في تصحيح الأخطاء هذه المشكلة، يرجى نشر إخراج الجلسة الكاملة التالية للأوامر:

cd to the top-level directory in your repo
ls -al
cat .git/config
find . -name ".git*"
git status
git add editors
git add shells
git status

بناء على وصف ما قمت به حتى الآن، أتوقع أن أرى:

  • رقم .gitmodules ملف في أي مكان
  • واحد فقط .git الدليل (وجدت في جذر ريبو الخاص بك)
  • رقم .git دليل في editors/vim/vimdoclet
  • رقم .git دليل في shells/smallApps

نصائح أخرى

أرى أنك حصلت git add قول شيء عن الأسفل. هل قمت بتوزيع مستودعات الجيت؟ افعل هذا:

$ find . -name .git

كم العدد .git الدلائل مدرجة؟ إذا كان هناك أكثر من واحد، فقد حصلت على مستودعات متعددة متداخلة وهذا قد يكون سبب بعض هذا الارتباك.

يجب أن تفكر في نشر هذا السؤال إلى قائمة بريد جيت (git@vger.kernel.org). من المرجح أن تحصل على استجابة سريعة سريعة وتكمل.

إذا قررت نشره هناك، فتأكد من تشمل:

  • وصف لما تحاول تحقيقه.
  • وصف للمشكلة التي واجهتها.
  • سجل جلسة كاملة يظهر:
    • CD إلى دليل المستوى الأعلى في Repo
    • ls -al
    • cat .git/config
    • find . -name ".git*"
    • git status
    • git add editors
    • git add shells
    • git status
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top