Fork
Kısaca
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.
Git'te fork nedir?
Fork, GitHub, GitLab veya Bitbucket gibi bir barındırma platformunda kendi hesabınız altında oluşturulan, dosyalarını, branch'lerini ve geçmişini içeren tam bir depo kopyasıdır. Fork'unuz üzerinde tam denetim sahibisiniz; özgün projenin sahiplerinden izin almadan istediğiniz değişiklikleri yapabilirsiniz. Özgün depoya genellikle upstream denir.
Fork'lamak, yazma erişiminizin olmadığı açık kaynak projelere katkı vermenin standart yoludur. Projeyi fork'lar, fork'unuzu bilgisayarınıza klonlar, bir branch üzerinde değişiklik yapar, bunları fork'unuza push eder ve ardından upstream bakımcılarından çalışmanızı birleştirmelerini isteyen bir pull request açarsınız. Fork'unuzu güncel tutmak için özgün projeyi upstream adlı bir remote olarak ekler ve yeni commit'lerini düzenli olarak çekersiniz.
Fork, yayımlanmış bir yemek kitabını fotokopiyle çoğaltıp kenarlarına not almak ve yeni tarifler denemek gibidir. Değişikliklerinizden biri çok iyi çıkarsa bunu özgün yazara gönderirsiniz; o da sonraki baskıya eklenip eklenmeyeceğine karar verir. Bazen bir fork, genellikle topluluk özgün projenin yönü konusunda anlaşamadığında kendi başına ayrı bir projeye dönüşür; LibreOffice'in OpenOffice.org'dan ayrılması buna örnektir.
Fork sıklıkla klon ya da branch ile karıştırılır. Klon, git clone ile yapılan, bir deponun yerel makinenizdeki kopyasıdır; fork ise farklı bir hesap altındaki sunucu tarafı kopyadır. Branch ise aynı depo içindeki ayrı bir çalışma hattıdır; bu yüzden tek bir depoyu paylaşan ekipler genellikle fork yerine branch kullanır.
Önemli noktalar
- Fork, bir barındırma platformunda bir deponun kendi hesabınız altındaki kopyasıdır.
- Fork'lar, doğrudan push edemediğiniz projelere pull request'ler aracılığıyla katkı vermenizi sağlar.
- Özgün depoya upstream denir; güncel kalmak için onunla senkronize olun.
- Fork'lamak bir Git komutu değil, barındırma platformu özelliğidir.
Örnek
# After forking on the hosting platform, clone YOUR fork
git clone https://github.com/your-name/project.git
cd project
# Add a second remote that points at the original repository
git remote add upstream https://github.com/original-owner/project.git
# Keep your fork up to date with the original
git fetch upstream
git switch main
git merge upstream/main
git push origin mainSık sorulan sorular
Fork ile klon arasındaki fark nedir?
Fork, barındırma platformunda hesabınız altında oluşturulan bir depo kopyasıdır. Klon ise kendi bilgisayarınıza indirilen bir kopyadır; tipik iş akışında önce bir projeyi fork'lar, sonra fork'unuzu klonlarsınız.
Fork ile branch arasındaki fark nedir?
Branch, aynı depo içindeki ayrı bir geliştirme hattıdır ve orada branch oluşturmak yazma erişimi gerektirir. Fork ise sahibi olduğunuz, tamamen ayrı bir depodur; bu yüzden branch oluşturamadığınız projelere katkı vermek için fork kullanılır.
Fork'umu nasıl güncel tutarım?
git remote add upstream <url> ile özgün projeyi bir remote olarak ekleyin, ardından git fetch upstream çalıştırın ve upstream/main'i branch'inize merge ya da rebase edin. Birçok barındırma platformu bunu sizin yerinize yapan bir eşitleme düğmesi de sunar.
Sık karşılaştırılanlar
İlgili sayfalar
- RepositorySürüm Kontrolü, s. 34Repository, bir projenin tüm dosyalarını ve sürüm kontrol sisteminin kaydettiği her değişikliğin eksiksiz geçmişini barındıran depolama alanıdır.
- Pull RequestSürüm Kontrolü, s. 32Pull request, bir branch'teki değişiklikleri başka bir branch'e birleştirme önerisidir; kod birleşmeden önce ekibe inceleme, tartışma ve test alanı sunar.
- BranchSürüm Kontrolü, s. 2Git'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.
- GitSürüm Kontrolü, s. 10Git, dosyalardaki değişiklikleri zamanla izleyen ücretsiz, açık kaynaklı dağıtık sürüm kontrol sistemidir; iş birliğini ve hataları geri almayı kolaylaştırır.
- MergeSürüm Kontrolü, s. 29Git'te merge, bir branch'teki değişiklikleri başka bir branch'e katarak ayrı geliştirme hatlarını tek ve ortak bir geçmişte yeniden birleştirir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin