سؤال

لدي فرع محلي للعمل ديف يومي في جيت. سير العمل الخاص بي هو:

  1. هل الاشياء على local_branch، الالتزام
  2. جلب أصل / ماجستير
  3. Rebase Local_Branch للحاق بالاشياء الجديدة من الأصل / ماجستير

كل شيء يعمل بشكل جيد، لكن معظم التوصيات التي واجهتها تقول إن المرء لا ينبغي أن "دفع" فروع خاصة، والتي يتم فيها تنفيذ Rebase بانتظام.

المشكلة هنا هي أنه في هذه الحالة، لا يتم نسخ الفرع المحلي يصل إلى خادم والطريقة الوحيدة لحفظ العمل هو دمجه إلى فرع "قابل للتعديل" (أي أصل / ماجستير)

ما هي توصياتك بشأن سير العمل في هذه الحالة؟

شكرا!

تحديث: أدركت أن إحدى المتطلبات الأصلية التي كان لدي (تجنب استخدام الأدوات المساعدة الخارجية) هي الحد غير الضروري.

الحل الحالي هو تخزين جميع مستودعاتي في مجلد سحابة متزامنة - بهذه الطريقة أحصل على النسخ الاحتياطي مجانا.

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

المحلول

يمكنني استخدام الخيار --Mirror ودفع إلى مستودع نسخ احتياطي شخصي:

أضفها كمالة عن بعد:

git remote add bak server:/path/to/backup/repo

هل النسخ الاحتياطي:

git push --mirror bak

سيقوم ذلك تلقائيا بإجراء مستودع النسخ الاحتياطي الخاص بك يبدو وكأنه سيتم إنشاء الفروع النشطة الخاصة بك، وسيتم حذفها وتحديثها (حتى القسري / غير الأساسي) حسب الحاجة. يمكنك إجراء اسم مستعار لهذا أيضا:

git config alias.bak "push --mirror bak"

ثم، إنها مجرد مسألة تشغيل "Git Bak" عندما تريد إجراء نسخة احتياطية. يمكنك أيضا رمي هذا في وظيفة كرون.

نصائح أخرى

لا يوجد شيء خاطئ في دفع الفروع الشخصية. من الغرض بشكل عام لأن الأشخاص قد يبدأون العمل بناء على فرعك، وعندما ترتد، يتم ترك تغييراتهم عائمة.

ما أقوم به هو استخدام بادئة للدلالة "هذا هو فرعي، واستخدامه على مسؤوليتك الخاصة"، مثل: FC-General-Cleanup.

سيكون هناك خيار آخر هو دفع "Local_branch" إلى Repo "الأصل"، ولكن إلى فرع خاص بهذا الريبو (وليس "سيد")، أي:

git push origin local_branch:local_backup

ثم عندما تكون مستعدا لإجراء نسخة احتياطية أخرى (وبعد أن تقوم بعمل بعض الأعمال والاستمرار)، ما عليك سوى حذف فرع النسخ الاحتياطي من أصل Repo قبل دفعه مرة أخرى:

git push origin :local_backup <=== حذف الفرع من الأصل

git push origin local_branch:local_backup

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

وإذا كان حذف فروع النسخ الاحتياطي الخاص بك يجعلك تشعر بالتوتر (حتى بعد أن ارتكبت أخيرا عملك إلى "ماجستير")، فيمكنك دائما الاستمرار في الضغط إلى فرع جديد مع اسم جديد (مثل "Local_backup1"، "local_backup2"، إلخ) وبعد

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

دعونا نقول هذا هو ما يشبه الرسم البياني للالتزام بعد أن تفرع من Local_Branch وأصلى بضع ارتكاب لها (C و D). قام شخص آخر بإجراء ارتكاب واحد (ه) إلى الأصل / ماجستير منذ التفرع من Local_branch:

أ - ب - ه [أصل / ماجستير]    - C - D [local_branch

ثم بعد تشغيل "GIT Rebase الأصل / Master"، سيبدو الرسم البياني الالتزام الرسم البياني التالي. "الأصل / الماجستير" لا يزال هو نفسه، ولكن "local_branch" قد تم تمرضها:

أ - ب - ه [أصل / ماجستير]    - C - D [local_branch

في هذه المرحلة، إذا قمت ب "Git Push Origin Local_branch: Master"، فسيؤدي ذلك إلى الأمام بسيطة. سيكون "الأصل / ماجستير" و "Local_branch" متطابقا:

A - B - E - C - D [أصل / ماجستير]، [local_branch

الآن أنت حر في عمل المزيد من العمل على "local_branch". في النهاية قد تحصل على شيء مثل هذا:

A - B - E - C - D - G - I [الأصل / ماجستير]    - F - H [local_branch

لاحظ أن هذا يبدو كثيرا مثل الرسم البياني البداية. يمكنك الاستمرار في تكرار هذه العملية مرارا وتكرارا.

يجب تجنب الدفع إلى بعض آخر فرع، واحد أنك لا تخلص منها. هذا هو المكان الذي ستواجه فيه مشكلة (إلى الفرع الآخر، سيبدو وكأنه قد تمت إعادة كتابة تاريخ "Local_Branch" فجأة، بعد إعادة تعيينه من "الأصل / ماجستير").

هل يمكنك إعداد مستودع بعيد آخر تدفع كل فروعك إليه؟ الشيء الآخر الذي يجب مراعاته هو مجرد دعم كل شيء (مهم) على جهازك المحلي، بما في ذلك ريبو الجيت.

إليك ما أقوم به. وبعد ولكن - هذا ليس خاصا. أفعل هذا حتى أتمكن من التعاون مع نفسي (حتى التحدث). يتيح لي أن أعمل على نفس الفرع على صندوقين أو أكثر. إذا كان لدى أشخاص آخرين الوصول إلى الريبو المشترك، فقد يرون العمل الذي أقوم به على الفرع. بالطبع، على ريبوس منزلي، لا أحد لديه إمكانية الوصول، لذلك لا يزال خاصا. على جيثب، كل العالم يمكن أن يرى أشيائي. مثلهم يهتمون حقا. ؛)

بدلا من الاعتماد على dropbox لمزامنة الكل ملفات repo git، أفضل استخدام git bundle, ، والتي تنتج فقط واحد ملف (بما في ذلك جميع الفروع الخاصة بك)، ومزامنة هذا الملف مع dropbox.
يرى "بوابة مع dropbox."

في "النسخ الاحتياطي مستودع جيت محلي", yars. ذكر وجود أخطاء مزامنة مع dropbox.

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