الأخطاء شائعة ، كلنا نرتكبها. لهذا السبب وضعوا الممحاة على أقلام الرصاص. وهذا لا يختلف مع أدوات مثل Git. في حين أنه قد يكون من الصعب التراجع عن بعض التغييرات ، فعادة ما تكون هناك طريقة.
إذن ماذا لو كنت تريد تعديل رسالة الالتزام الحالية؟ لحسن الحظ ، من السهل القيام بذلك في Git ، لكن الطريقة قد تتغير قليلاً اعتمادًا على بعض العوامل.
إصلاح آخر التزام ، لم يتم دفعه إلى جهاز التحكم عن بعد
هذه أبسط حالة نظرًا لعدم وجود حاجة لتعديل مستودع بعيد ، ما عليك سوى تعديل المستودع الخاص بك. في هذه الحالة ، يمكنك استخدام الأمر التالي:
$ git commit --amend
سيؤدي تشغيل هذا الأمر إلى فتح محرر يمكنك من خلاله تعديل ملف آخر ارتكاب رسالة. بمجرد الانتهاء من حفظ / إغلاق المحرر ، سيتم تغيير رسالة الالتزام.
أنا شخصياً أفضل القيام بمعظم الأشياء في سطر الأوامر ، والتي يمكنك القيام بها عن طريق إضافة وسيطة ورسالة إلى الأمر أعلاه:
$ git commit --amend -m "Added a new file"
لن يؤدي القيام بذلك بهذه الطريقة إلى فتح المحرر ، ولكنه بدلاً من ذلك سيعدل رسالة الالتزام على الفور.
إصلاح الالتزام الأخير ، الدفع إلى جهاز التحكم عن بعد
هذه حالة شائعة أخرى ، ويصعب إصلاحها قليلاً ، ليس فقط لأننا نحتاج إلى تعديل مستودعنا الخاص ، ولكننا نحتاج أيضًا إلى تعديل المستودع البعيد ، والذي قد يكون متقدمًا عن فرعك المحلي.
الخطوة الأولى هي تعديل الالتزام الأخير ، تمامًا كما فعلنا في القسم السابق:
$ git commit --amend -m "Added a new file"
بعد ذلك ، تحتاج إلى دفع هذه التغييرات إلى المستودع البعيد. ومع ذلك ، يجب أن يتم ذلك باستخدام --force
العلم.
$ git push <remote> <branch> --force
نحن بحاجة إلى القيام بذلك بهذه الطريقة لاستبدال المستودع البعيد بولايتنا المحلية.
اعلم أنه من خلال الدفع بالقوة ، ستفعل ذلك أيضًا فقد أي التزامات على الفرع المحلي ليس لديك بالفعل في فرعك المحلي. التقدم بحذر!
تحقق من دليلنا العملي العملي لتعلم Git ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!
إذا تمكنت من اكتشاف الخطأ بسرعة كافية ، فلن يكون إجراء التغيير مشكلة. خلاف ذلك ، قد تحتاج إلى إيجاد حل آخر لتجنب فقدان أي تغييرات تم إجراؤها بعد رسالة الالتزام التي تريد تغييرها.
استخدم Rebase التفاعلي
هناك خيار آخر ، وهو أكثر مرونة من الحلول السابقة الموصوفة ، وهو استخدام تغيير أساسي تفاعلي. يتيح لك القيام بذلك فحص التزامات N الأخيرة وإجراء تغييرات عليها ، بما في ذلك الانتقاء والضغط وما إلى ذلك.
لبدء تغيير العنوان الأساسي ، يمكنك استخدام الأمر التالي:
$ git rebase -i HEAD~n
هنا، n
هو عدد الالتزامات التي تريد فحصها وتحريرها. سترى بعد ذلك قائمة بالالتزامات ، على غرار ما يلي:
$ $ git rebase -i HEAD~4
pick 788ebf0 Oops, I forgot to add a new file
pick ced1329 Fixed a super critical bug
pick 5e9cdc5 Added a new file
كما ترى ، تم سرد جميع عمليات N الأخيرة ، ويمكنك تعديل رسائلهم حسب الحاجة.