هل أستطيع نقل .بوابة الدليل الريبو إلى الوالدين الدليل ؟
-
03-07-2019 - |
سؤال
لدي اثنين من الدلائل الفرعية مع كل الريبو ، وبالتالي :
PPP/
|--ABC/
| |--.git/
| |--AAA/
| | BBB/
| | CCC/
|
|--DEF/
| |--.git/
| |--DDD/
| |--EEE/
وأود أن الجمع بينهما في واحدة الريبو لذا أود أن نفترض بنية الدليل سوف يكون مثل هذا الطقس:
PPP/
|--.git/
|--ABC/
| |--AAA/
| |--BBB/
| |--CCC/
|
|--DEF/
| |--DDD/
| |--EEE/
هذا هو posible?
أيضا حاليا العديد من الناس لديهم اتفاقيات إعادة الشراء على الأجهزة الخاصة بهم.كيف أكثر من ذلك بكثير تعقيدا لا تجعل الحياة ؟
تا.
المحلول
يمكنك أن تفعل ما كنت تصف مثل هذا:
نقل المحتوى من
ABC
إلىABC/
فرعي ، وتحديد التاريخ بحيث يبدو أنه كان دائما هناك:$ cd /path/to/ABC $ git filter-branch --index-filter \ 'git ls-files -s | sed "s-\t-&ABC/-" | GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ git update-index --index-info && mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
الآن بنية الدليل الخاص بك هو
ABC/ABC/your_code
نفسه عن محتوى
DEF
:$ cd /path/to/DEF $ git filter-branch --index-filter \ 'git ls-files -s | sed "s-\t-&DEF/-" | GIT_INDEX_FILE=$GIT_INDEX_FILE.new \ git update-index --index-info && mv $GIT_INDEX_FILE.new $GIT_INDEX_FILE' HEAD
الآن بنية الدليل الخاص بك هو
DEF/DEF/your_code
أخيرا, إنشاء
PPP
مستودع وسحب كلABC
وDEF
في ذلك:$ mkdir /path/to/PPP $ cd /path/to/PPP $ git init $ git pull /path/to/ABC $ git pull /path/to/DEF
الآن لديك
PPP/ABC/your_code
وPPP/DEF/your_code
, جنبا إلى جنب مع التاريخ.
ربما يجب أن تسأل أنت وزملائك لتشغيل أوامر سابقة على النظام من أجل أن يكون الجميع متزامنة.
ملاحظة: غير تقليدي
filter-branch
الأوامر تأتي من رجل الصفحة. :-)
نصائح أخرى
هل كنت حقا بحاجة إلى دمج اثنين من القائمة مستودعات في ملف واحد أو هل تريد فقط أن مجموعة منهم ؟
إذا كنت ترغب فقط في مجموعة منهم ، ثم بوابة submodule سوف تفعل ما تريد:عليك في نهاية المطاف مع ثلاثة مستودعات حيث أعلى مستوى واحد روابط الثاني الحالي.
كدليل:
يجب دمجها في مستودع واحد إذا كنت تريد الذهاب إلى زيادة اقتران بينهما بحيث أنه لم يعد من المنطقي أن استخدام نسخة واحدة من الريبو مع نسخة مختلفة من الريبو B.
يجب عليك استخدام الوحدات الفرعية إذا كانت لا تزال نوعا ما منفصلة (أحيانا المنطقي للعمل على واحد في العزلة), ولكن كنت أريد الراحة لتكون قادرة على العمل مع بعضهم البعض (على سبيل المثالتحميل كل مرة من نقطة التفتيش المعروفة جيدة الدول عبر كلا ، إلخ).
باستخدام الوحدات الفرعية سوف تجنب المشاكل مع النسخ الموجودة من مستودعات منذ التاريخ لا يتغير.دمج لهم خلق تاريخ جديد وسوف يكون من الصعب على الناس العمل من الفروع القائمة على دمج التغييرات الخاصة بهم.
وبالنسبة لي يبدو من الصعب القيام به بالطريقة التي ترغب في ذلك لأن تاريخ كل مشروع يتم دمج.
وأفضل نصيحتي سيكون لإنشاء مستودع جديد لاحتواء ABC و DEF، وحفظ الريبو القديم من هذين أن يكون النسخ الاحتياطي التاريخ وبدء تاريخ جديد مع هذا المشروع الجديد.