[Ar] GitHub PR squash merge
(1) مقدمة
لما تيجي تـmerge PR في GitHub عندك 3 options:
Create a merge commit.
Squash and merge.
Rebase and merge.
الـdefault في GitHub هو الأوبشن الأول. اقتراحي عليك في البوست ده إنك تستعمل الأوبشن التاني.
(2) الفرق بين أول أوبشن والاتنين اللي بعده
الفرق بين أول أوبشن والاتنين اللي بعديه هو إن الأوبشن الأولاني مش هيخلي الـgit history بتاعك linear.
هيخليه بالشكل ده:
لما الـgit history مابيبقاش linear، ده بيصعب قرايته، وبيصعب حاجات زي إنك تـrevert مثلاً.
(3) الفرق بين squash وrebase
الـsquash والـrebase الاتنين هيخلوا الـgit history بتاعك linear.
الـsquash هيضغط كل الـcommits بتاعتك في commit واحدة ويحطها بعد آخر commit على الـmaster:
بينما الـrebase هينقل الـcommits بتوعك واحدة واحدة بعد آخر commit على الـmaster:
اقتراحي هو إنك تستخدم الأوبشن بتاع الـSquash and merge لإنه (1) هيخلي الـgit history بتاعك يبقى linear، و(2) هيخلي شغل الـbranch كله يبقى في commit واحدة وبالتالي يخلي الـgit history بتاع الـmaster أسهل في قرايته.
(4) GitHub PR config
من الـsettings بتاعة الـrepo، انت ممكن ماتسمحش غير بـSquash and merge لو عايز تـenforce ده على مستوى التيم (بعد الاتفاق معاهم)، ومش عايز تـmerge بأي طريقة تانية بالغلط:
(5) Conclusion
فبس يعني .. لو بتستعمل pull requests في GitHub (أو غيره)، ابقى جرب أوبشن إنك تـmerge الـPR بالـsquash and merge، وشوف لو ده كويس بالنسبة لك.
لو عندك خبرة أو رأي مخالف أحب جداً أسمعه.
شكراً لقرايتكم.