لإظهار تبعية التعليمات البرمجية الخارجية في GIT من قبل

StackOverflow https://stackoverflow.com/questions/1145422

  •  16-09-2019
  •  | 
  •  

سؤال

مشكلة حل: لإظهار تبعية التعليمات البرمجية الخارجية عن طريق نقل الأسفلات: بفضل Vonc.!

المشكلة الحالية: امتلاك تنويب دون محتويات مكررة في مجلدين

حل مؤقت للمشكلة الحالية: لتغيير اسم المجلد إلى Bin-Github، نظرا لأن اسم المجلد كمنشوع هو صندوق. هذا يعني أنني بحاجة إلى تكرار المحتويات في منزلي.

مجلد منزلي يعتمد على ~ / bin. لدي ملفات تقع في المنزل عند المستودع ماسي, ، بينما في ~ / بن في repo سلة مهملات في جيثب. هيكل المجلد ذي الصلة في المنزل:

~
|-- [drwxr-xr-x] bin
    | -- fileA
    ` -- folderA
    ...

أود أن أعرف كيفية إظهار جعل ~ / bin تنشيط جيت في ماسي.

كيف يمكنك أن تجعل ~ / bin تنشأ من بلدي بوابة في ~ /؟


# 3 رد على تعليق Vonc:

بلدي .gitmodules.

[submodule "bin"]   
         path = bin
         url = git://github.com/masi/bin.git

أشعر أنني لا أحتاج إلى إضافته بعد الآن في المنقطات مرة أخرى، حيث أن لدي في بلدي .gitmodules.

انا اجري

Sam master $ git submodule update
Sam master $ git submodule foreach git pull
Sam master $ ls bin 

# 2 الرد على إجابة Vonc:

لقد غيرت .gitmodules الخاص بي إلى ما يلي بحيث لا أملك نسخة مكررة منه في منزلي.

[submodule "bin"]
    path = bin
    url = git://github.com/masi/bin.git

يبدو أن هذا هو موقفا مختلفا لأنني لا أستطيع سحب GLOMDERDER على النحو التالي على النحو الوارد أعلاه.

أحصل على ما يلي الآن في جيت ريبو

Sam master $ git submodule git init
error: pathspec 'git' did not match any file(s) known to git.
error: pathspec 'init' did not match any file(s) known to git.
Did you forget to 'git add'?                          # I am not sure what this means
Sam master $ git submodule foreach git pull
Sam master $ git submodule update

لدي مستودع خارجي في بلدي .gitmodules. لماذا يطلب مني git add?


الرد على إجابة Vonc:

انا اجري

git submodule add git://github.com/masi/bin.git bin-github-copy

لأنني لا أستطيع إضافة ريبو جديد بنفس اسم المجلد الموجود bin.

بلدي .gitmodules هو

[submodule "bin-github-copy"]
    path = bin-github-copy
    url = git://github.com/masi/bin.git

انا اجري

git clone git://github.com/masi/Sam.git

أحصل على Empy Bin -Directory.

كيف يمكنني الحصول على محتوى الصندوق؟

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

المحلول

أولا، لا تنس أن مع GIT، لا يمكنك "إضافة" دليل، فقط محتوى ملف واحد على الأقل ضمن هذا الدليل.

ثم لديك خياران:

  • نقل الأسفل, ، من أجل MASI لإحالة الالتزام المحدد الخاص بك [الملفات داخل] Bin Directory المخزنة في Github (أو إلى آخر ارتكاب فرع، مخزن في Github)

  • دمج الفرعية, ، من أجل مزج المستودعات اثنين معا ومتابعة التعديلات بسهولة أكبر على الملفات داخل الصندوق مباشرة من مستودع MASI. قد يكون ذلك أبسط في السيناريو الخاص بك.

يرى هذه الإجابة لمزيد من الاستراتيجيات تلك 2.


على مسار نقل الأسفل، يعلن أن المنوطة نصف العمل فقط. لا يزال يتعين عليك تهيئة تنوؤك في المرة الأولى بواسطة

git submodule git init

تحتاج ثم اسحب الغشائما:

git submodule foreach git pull

ثم قم بتحديث المناسبات الخاصة بك

git submodule update

انظر أيضا هذا المثال العملي مع بنوات نقل جيت، الجزء الأول و بنوات نقل جيت، الجزء الثاني.

ال .gitmodules يخزن الملف فقط المسارات، ولكن يتم تخزين إصدار الالتزام بالمشروع الرئيسي.
لقد أنشأت أ مشروع على Github. لإظهار ما يحدث. انظر على وجه التحديد إلى هذا الالتزام, ، مما يضيف المنقطات، لمعرفة ما يجري:

+Subproject commit 60be4b09f51d2560802ebd744893bb6f737ef57c
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top