Benim anladığım yapı kurmak anlamında aslında çok farkı yok gibi. Kişisel ihtiyaçlara göre birini diğerinin yerine kullanabiliriz. Neden branch kullanacağız sorusunun cevabı olarak benim uyguladığım; aynı kod tabanında farklı ortamları desteklemek gerekiyorsa kullanılabilir. Bu ne demek oluyor? Bir ürünümüz var bu ürün için canlı ve test ortamlarımız var. Bunların belirli aralıklarda sürekli birleştirilmesi ve canlı ortamın güncel olması gerekiyor. Bu iş için bir Master branch üzerinden ihtiyacı olunan ortamlar için branch açarak ilerleyebiliriz. İhtiyacımız oldukça da bu açılan branch Master altına birleştirilebilir.
Fork ise paralelde bir Master branch daha istiyorsak bana mantıklı geliyor. Temel örnek olarak aklıma gelen ise; bir firmada yazılım departmanı olarak çalışıyorsak veya kendi ürünlerimizde sürümleme yapıyorsak, yani belirli aralıklarla sürüm çıkarıp bunu dağıtıyorsak. Bunun sonucunda bakım sözümüz varsa yani o sürüme destek vereceksek farklı bir fork üzerinden ilerleyebilir. O fork üzerinde yine istenilen branch açılıp kapatılabilir, başka bir ürünün Master branchı olarak yaşayabilir.
Aslında ikisini birbiri yerine kullanabiliriz gibi görünüyor. Yine her zaman olduğu gibi mantıksal ayrımları kendi kafamızda belirlememiz gerekiyor.
İyi çalışmalar.