Bir yazılım projesi geliştirirken, büyük boyutlu dosyalar sık sık karşımıza çıkar. Bu dosyaların etkili bir şekilde yönetilmesi ve paylaşılması, projenin bütünlüğünü korumak ve işbirliği yapmayı kolaylaştırmak için önemlidir. Bu makale, Git Large File Storage (Git LFS) kullanarak yerelde bulunan yüksek boyutlu bir Git deposunun Bitbucket’a nasıl taşınacağını adım adım açıklar.

1 Git LFS Hakkında Kısa Bir Bilgi
Git LFS, büyük boyutlu dosyaların etkili bir şekilde yönetilmesini sağlayan bir Git uzantısıdır. Bu dosyalar, depo geçmişini şişirmeden özel bir yerde saklanır. Bu, depo performansını artırır ve işbirliği yaparken karşılaşılan sorunları azaltır.

2 Git Kurulumu
Eğer daha önce Git kurulumu yapmadıysanız, aşağıdaki adımları izleyerek Git’i sisteminize kurun:

  1. Git resmi web sitesine gidin: https://git-scm.com/
  2. İndirme sayfasında, uygun olan Windows, Mac veya Linux sürümünü seçin.
  3. İndirme tamamlandığında, kurulum sihirbazını başlatın.
  4. Kurulum sırasında varsayılan seçenekleri kullanabilirsiniz. Fakat “Adjusting your PATH environment” adımında “Git from the command line and also from 3rd-party software” seçeneğinin işaretli olduğundan emin olun. Bu, Git’i komut satırından ve diğer yazılımlardan kullanmanıza olanak tanır.
  5. Kurulum tamamlandığında, Git’i doğru bir şekilde yüklediğinizden emin olmak için terminal veya komut istemcisini açın ve aşağıdaki komutu çalıştırın:
    git --version

    Bu komut, yüklü Git sürümünü göstermelidir.

3 Bitbucket Hesabı Oluşturma veya Giriş Yapma
Eğer zaten bir Bitbucket hesabınız yoksa, bitbucket.org adresine gidip hesap oluşturabilirsiniz. Hesabınızı zaten oluşturduysanız, giriş yapın.

4 Remote Bitbucket Repository Oluşturma
Bitbucket arayüzünden Repositories kısmına girin ve ardından Create Repository’e tıklayın.

Repository’i bir projeye bağlamak için, Create New Project’e tıklayın.

Proje ve Repository ismini girip, Create Repository’e tıklayın.

Repository oluşturuldu.

5 Yerel Git Deposunu Hazırlama
Unity ile geliştirilmiş bir oyunun kaynak kodlarının bulunduğu klasöre sahibim.
Bu klasör yaklaşık 26,1GB boyutunda. Kaynak kodların toplam boyutu 100 MB  oyun içi kullanılan assetler ve library’ler 26GB boyutunda.

Bu boyutta ki bir repo’yu normal bir şekilde pushlayamazsınız. O yüzden Git LFS burada devreye giriyor.

Remote repository’e uzaktan dosya pushlayabilmek için, Access token üretmemiz gerekiyor.
Bitbucket’da oluşturduğunuz repo’yu açın ve Repository Settings’e tıklayın.

Access Tokens kısmına girip, Create Repository Access Token’a tıklayın.

Gerekli yetkileri seçip, Create tıklayın.

Verdiği API bağlantılarından, en alttaki kırmızı kutu içine aldığım query’i kopyalayın.

Sıra Local’deki kaynak kodlarımızın bulunduğu klasöre git’i yüklemek.
Öncelikle klasörü CLI’da açmak için, adres çubuğuna cmd yazın.

İlk kodumuz “git init”, git init ile kaynak kod klasörüne git’i yükleyelim. .git adında gizli bir klasör oluşturacaktır.

git init

Hangi dosyaları git LFS’e göndereceksek, onun için bir .gitattributes dosyası hazırlamamız gerekiyor.

.gitattributes adında bir dosya oluşturun. Benim git LFS’e göndermek istediğim uzantılar;
*.psd, *.unity, *.tif, *.fbx, *.png, *.sln, *.sh
Dosyamı aşağıdaki gibi oluşturuyorum.

*.psd filter=lfs diff=lfs merge=lfs -text
*.unity filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.fbx filter=lfs diff=lfs merge=lfs -text
buildings_smal_spec.png filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.sln filter=lfs diff=lfs merge=lfs -text
*.sh filter=lfs diff=lfs merge=lfs -text
master filter=lfs diff=lfs merge=lfs -text

Tekrar CLI’ya dönüp, demin aldığım repository access token’ı yapıştırıyorum.

Git LFS hook’unu kaynak kod klasörüme ekliyorum.

git lfs install

Remote repository adresini, localde bulunan kaynak kod klasörümüzdeki git’e ekleyeceğiz.
Bitbucket konsolunda, repository’i açın. Sağ taraftaki Clone’a tıklayın.

https ile başlayıp .git ile biten kısmı kopyalayın.

Tekrar CLI’ya dönün ve repoyu ekleyin.

git remote add origin "repo url"

Tüm dosyaları remote repo’ya göndermeden önce ilk olarak, .gitattributes dosyasını göndereceğiz.

git add .gitattributes
git commit -m "push .gitattributes
git push origin master --force

Buradaki master yazan şey branch’inizin adıdır. Hangi branch’e pushlamak isterseniz, onu yazın.

Dosyayı remote repo’ya gönderdik. Bitbucket’a dönüp, repoyu kontrol edelim.
.gitattributes dosyası sorunsuz gönderilmiş.

Sırada en yüksek dosya boyutu olan Assets klasörünü Git LFS’e göndermede. Aşağıdaki kodları sırasıyla CLI’a yazalım.
git add Assets kısmında biraz bekletecektir.

git add Assets
git commit -m "push Assets"


git push origin master --force

Upload işlemi bittikten sonra, Bitbucket üzerinden Repository > Repository settings > Git LFS kısmına gidin.
Yaklaşık 180 sayfa Assets’i sorunsuz gönderdiği görülecektir.

Yüksek boyutlardaki Assetler’iniz artık LFS’de depolanmakta. Siz tamamen kod kısmıyla ilgilenebilirsiniz. Bu sayede local repo’yu sürekli yedeklemenize gerek kalmayacaktır.

Varsayılan olarak Free üyelikte Git LFS sınırı 1GB’dır. Standart planda 100 gb’ı aylık 10 dolara satın alabilirsiniz.
Bunun için sağ üstten Settings > Workspace Settings kısmına tıklayın.

Sol taraftaki Plan Details kısmından, planınızı upgrade edebilirisiniz.

Bu makalede, büyük boyutlu dosyaları Git LFS kullanarak Bitbucket’a nasıl taşıyacağınızı adım adım öğrendiniz. Büyük boyutlu dosyaların yönetimi, projelerinizi daha etkili bir şekilde yönetmek ve işbirliği yapmak açısından kritik bir faktördür. Git LFS sayesinde dosyalarınızı etkili bir şekilde yönetebilir, projenizin performansını artırabilir ve işbirliği yaparken karşılaşabileceğiniz sorunları en aza indirebilirsiniz.

Unutmayın ki, projenizin gereksinimlerine göre bu adımları özelleştirebilirsiniz. Büyük boyutlu dosyaların yönetimi, projenizin başarısını etkileyen önemli bir adımdır. Bitbucket ve Git LFS gibi araçları kullanarak bu süreci daha verimli hale getirebilirsiniz.

Artık projenizin büyük boyutlu dosyalarını Git LFS kullanarak başarıyla Bitbucket’a taşıma konusunda daha bilgili ve hazırsınız. İyi çalışmalar!