در branch by abstraction جلوی پیاده‌سازی قدیمی یک interface می‌گذارید، پیاده‌سازی تازه را کنارش اضافه می‌کنید و بینشان سوییچ می‌کنید (اغلب با feature flag). بازنویسی در گام‌های کوچک به شاخه‌ی اصلی می‌رسد، نه روی شاخه‌ای بلندمدت.