Ana içeriğe geç

Yan yana

ForkvsBranch

Fork ile branch arasındaki fark nedir?

Güncellendi 2 dk okuma7 fark

Kısaca

Fork, bir deponun başka bir hesaptaki tam kopyasıdır, push edemediğiniz projelere katkı için kullanılır; branch ise aynı depodaki ayrı bir iş çizgisidir.

Fork

Fork, başkasının deposunun bir barındırma platformundaki kişisel kopyasıdır; özgürce denemeler yapmanızı ve değişiklikleri özgün projeye geri önermenizi sağlar.

Fork sayfasını oku

Branch

Git'te branch, bir özellik ya da düzeltme üzerinde, birleştirene kadar ana kodu etkilemeden çalışmanızı sağlayan bağımsız bir geliştirme hattıdır.

Branch sayfasını oku

Fork ve Branch karşılaştırması

ÖzellikForkBranch
NedirBir deponun başka bir sahibin altındaki tam kopyasıTek bir depo içindeki adlandırılmış bir çalışma çizgisi
Nerede dururBarındırma platformunda ayrı bir depoAna kodla aynı deponun içinde
İzinlerKopyanız üzerinde tam denetiminiz varDepoya yazma erişimi gerekir
Nasıl oluşturulurBarındırma platformunda bir düğme ya da API çağrısıylagit branch ya da git switch -c ile
Güncel kalmaBir upstream remote'undan fetch etmekAna daldan merge veya rebase etmek
İşin görünürlüğüPull request açılana kadar özgün depodan ayrıDepoya erişimi olan herkes tarafından görülür
En uygun olduğu yerAçık kaynak katkıları ve bağımsız türevlerBir ekip içindeki özellikler, düzeltmeler ve denemeler

Fark, açıklamalı

Fork, bir kod barındırma platformunda kendi hesabınız altında oluşturulan, dalları ve geçmişiyle birlikte başkasının deposunun tam bir kopyasıdır. Branch (dal) ise bir Git deposunda bir commit'i gösteren hareketli bir işaretçidir; ana kod çizgisine dokunmadan bir özellik ya da düzeltme üzerinde çalışmanızı sağlar.

Fark sahiplik ve izinlerdedir. Dallar tek bir depoda bulunur ve yazma erişimi olan herkes tarafından paylaşılır; bu, birlikte çalışan bir ekibe uygundur. Fork ise size tam denetimi olan kendi deponuzu verir; insanlar push edemedikleri açık kaynak projelerine bu yolla katkı yapar: fork'larında değişiklik yapar ve genellikle upstream denen özgün depoya bir pull request açarlar.

Fork'lar ve dallar birlikte kullanılır. Bir fork'un içinde de her değişiklik için yine bir dal oluşturursunuz ve pull request, o dalın upstream deposunun bir dalına merge edilmesini ister. Bir fork'u güncel tutmak için özgün depoyu upstream adlı bir remote olarak eklersiniz ve değişikliklerini fetch edersiniz.

Sık yapılan bir yanlış, fork'lamanın bir Git komutu olduğu düşüncesidir. Git'in kendisinde yalnızca klonlar, dallar ve remote'lar vardır; fork'lama, sunucu tarafında bir kopya oluşturan ve özgün depoya bağlantıyı hatırlayan barındırma platformlarının bir özelliğidir.

Hangisini kullanmalısınız?

Fork şu durumlarda doğru seçim:

  • Özgün depoya yazma erişiminiz yok.
  • Bir açık kaynak projesine katkı yapıyorsunuz.
  • Bir projenin bağımsız bir sürümünü başlatmak istiyorsunuz.

Branch şu durumlarda doğru seçim:

  • Ekiptesiniz ve depoya push edebiliyorsunuz.
  • Yakında geri merge edilecek bir özellik ya da düzeltme geliştiriyorsunuz.
  • Projeden ayrılmadan deney yapmak istiyorsunuz.

Fork ya da branch ile katkı yapmak

Forkbash
# After forking on the hosting platform, clone your copy
git clone https://git.example.com/you/project.git
cd project

# Link the original repository to stay in sync
git remote add upstream https://git.example.com/owner/project.git
git fetch upstream
git merge upstream/main
Branchbash
# Work on a branch inside the same repository
git switch -c fix-login
git commit -am "Fix login redirect"
git push -u origin fix-login

# Then open a pull request from fix-login into main

Sık sorulan sorular

Fork mu yapmalıyım, branch mi açmalıyım?

Depoya yazma erişiminiz varsa, ki bu bir ekipte olağandır, branch açın. Yoksa, çoğu açık kaynak projesinde olduğu gibi, fork yapın ve değişikliklerinizi bir pull request ile geri gönderin.

Fork, klon ile aynı şey mi?

Tam olarak değil. Klon kendi makinenizdeki bir kopyadır; fork ise hesabınız altındaki, özgün depoya bağlantısını koruyan bir sunucu tarafı kopyadır.

Bir fork'un dalları olabilir mi?

Evet. Fork tam bir depodur, bu yüzden içinde her zamanki gibi dallar oluşturursunuz ve pull request'ler genellikle bu dallardan birinden açılır.

Daha fazla

Ayarlar