split - كيف يمكنني تقسيم التزام Git المدفون في التاريخ؟





commit revision-history (3)


إذا لم تكن قد دفعت بعد ، فقط استخدم git rebase . أفضل من ذلك ، استخدم git rebase -i لتحريك الإلتزامات بشكل تفاعلي. يمكنك نقل الالتزام المخالف إلى الأمام ، ثم تقسيمه كما تريد وتحريك البقع للخلف (إذا لزم الأمر).

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

أريد تقسيم هذا الالتزام قبل أن أخرجه ، ولكن معظم الأدلة التي أراها لها علاقة بتقسيمك لأحدث التزاماتك ، أو تغييرات محلية غير ملتزمة بها. هل من الممكن القيام بذلك لارتكاب مدفون في التاريخ قليلاً ، دون الاضطرار إلى "إعادة" ارتكابي منذ ذلك الحين؟




هناك دليل لتقسيم الإلتزامات في الصفحة الرئيسية لـ rebase . الموجز السريع هو:

  • قم بإجراء تمرد تفاعلي يتضمن الالتزام المستهدف (على سبيل المثال git rebase -i <commit-to-split>^ branch ) ووضع علامة عليه ليتم تحريره.

  • عندما يصل rebase إلى هذا الالتزام ، استخدم git reset HEAD^ to reset to before the commit، but keep your tree tree سليمة.

  • بشكل متزايد إضافة التغييرات والالتزام بها ، مما يجعل أكبر عدد من الالتزام كما هو مطلوب. يمكن أن تكون add -p مفيدة لإضافة بعض التغييرات في ملف معين فقط. استخدم commit -c ORIG_HEAD إذا كنت تريد إعادة استخدام رسالة الالتزام الأصلية commit -c ORIG_HEAD معين.

  • إذا كنت ترغب في اختبار ما ترتكبه (فكرة جيدة!) استخدم git stash لإخفاء الجزء الذي لم ترتكبه (أو stash --keep-index حتى قبل أن ترتكبها) ، واختبر ، ثم git stash pop إلى أعد الباقي إلى شجرة العمل. استمر في عمل الإلتزامات حتى تحصل على جميع التعديلات التي قمت بها ، أي أن يكون لديك شجرة عمل نظيفة.

  • تشغيل git rebase --continue تطبيق الالتزام بعد الالتزام الانقسام.




git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>




git split commit revision-history