Basit Seviyede Git Notları

Bir projenin Github ile entegrasyonu

Posted on December 29, 2022

Bu yazıda Windows'da bilgisayarımızdaki bir projenin git ile nasıl Github'a aktarılacağının anlatacağım. Ancak bilgisayar da "git" uygulamasının kurulduğunu ve GitHub'da bir hesabınızın olduğunu varsayıyorum. Eğer Github hesabınız yoksa, GitHub'ın web sitesinden ücretsiz bir hesap oluşturabilirsiniz. Ayrıca git kurulumunu https://git-scm.com/downloads adresinden yapabilirsiniz.

Git ile ilgili işlemleri Git Bash konsolundan yada "cmd" ile açılan Komut İstemi (Command Prompt) ekranından yapabiliriz.

  • GIT konfigürasyon ayarlarını görnek için :

    git config --list --show-origin

    Örneğin, çıktı şu şekilde olabilir:

    file:/c/ProgramData/Git/config   core.autocrlf=true
    file:/c/ProgramData/Git/config   http.sslbackend=openssl
    file:/c/Users/username/.gitconfig   user.name=User Name
    file:/c/Users/username/.gitconfig   user.email=User.Name@gmail.com
    

    Bu çıktıda, user.name ayarı C:\Users\username\.gitconfig dosyasından okunmuştur, core.autocrlf ayarı ise C:\ProgramData\Git\config dosyasından okunmuştur.

    C:\ProgramData\Git\etc\gitconfig dosyası, sistem-seviyesi git ayarlarının saklandığı bir dosyadır. Bu dosya, tüm kullanıcılar tarafından paylaşılan ve tüm projelerde kullanılacak olan ayarları içerir.

    Genellikle, bu dosya, bir sistem yöneticisi tarafından oluşturulur ve değiştirilir. Örneğin, bir sistem yöneticisi, tüm kullanıcıların aynı dil ayarını kullanmasını sağlamak için C:\ProgramData\Git\etc\gitconfig dosyasında i18n.commitencoding ayarını değiştirebilir.

    Eğer sistem-seviyesi git ayarlarını değiştirmek istiyorsanız, C:\ProgramData\Git\etc\gitconfig dosyasını düzenleyebilirsiniz. Ancak, bu dosyayı değiştirirken dikkatli olmanız gerekiyor, çünkü bu dosya tüm kullanıcılar ve tüm projeler için geçerlidir ve yanlış bir değişiklik yaparsanız, tüm kullanıcılar ve projeler etkilenebilir. Eğer bu dosyayı değiştirecekseniz öncesinde bir yedek almakta fayda vardır.

    Git içinde farklı yerde konfigürasyon mevcuttur. "Tüm userlar için konfigürasyon" , "sadece ilgii user için GLOBAL seviyede konfigürasyon" ve son olarak "proje klasörü içerisinde konfigürasyon".

    Proje klasörü içerinden git config --list --show-origin komutu çağrılırsa, proje için örneğin çıktı şu şekilde olabilir:

    file:.git/config        core.repositoryformatversion=0
    file:.git/config        core.filemode=false
    file:.git/config        core.bare=false
    file:.git/config        core.logallrefupdates=true
    file:.git/config        core.symlinks=false
    file:.git/config        core.ignorecase=true
    :

    İlgili ekrandan çıkıp command prompt'a dönmek için "q" ya basılmalıdır.

  • Sadece user bazında "GLOBAL" git ayarlarını görmek için :

    
    git config --list --show-origin | findstr "USERNAME/.gitconfig"
    
  • Proje klasörü içerisinde değilde sadece İlgili user için "GLOBAL" seviyede git ayarlarını değiştirmek için :

    git config --global user.name "example"
    git config --global user.email "email@example.com"
  • Yeni bir proje klasörü yaratıp bunu github'a yüklemek için sırasıyla şu komutlar uygulanmalıdır.

  • Komut İstemi ekranındayken Example_Project klasörü yaratılır

    md Example_Project

    "cd Example_Project" denilip klasör içine girdikten sonra bir python dosyası yaratılır

    echo print ("hello wordl") > hello.py
  • Daha sonra, klasör içinde bulunan dosyaları Git ile izleyebilmek için, klasörün içinden git init komutu çalıştırılır. Bu komut, klasörü bir Git depo (repository) haline getirir.

    Bu komutu çalıştırıldığında, o klasör içinde bir ".git" adlı gizli bir klasör oluşturulur. Bu klasör, o klasör içindeki değişikliklerin takip edilebilmesi için gerekli olan dosyaları içerir. Bu dosyalar, git log dosyası, git config dosyası gibi dosyalardır. Bu dosyalar sayesinde, o klasör içinde yapılan değişikliklerin tarihçesi tutulur ve değişikliklerin yönetimi yapılabilir.

    git init
    Initialized empty Git repository in D:/Workspace/GitHub/Example_Project/.git/
  • Daha sonra, git add . komutu çalıştırılarak tüm dosyalar Git'e eklenir. Bu komut, klasördeki tüm dosyaların Git tarafından izlemeye alınmasını sağlar.

    git add .
  • Devamında ise, git commit -m "initial commit" komutu çalıştırılarak yapılan işlemlerin onayı sağlanır. "-m" den sonra gelen açıklamada yapılan değişiklikler anlatılır. "initial commit yada ilk commit" gibi bir açıklama ile esasında projenin ilk halindeki tüm dosyaların bir ilk sürümünü oluşturduğumuzu beyan ediyoruz.

    git commit -m "initial commit"
    [master (root-commit) 228967a] initial commit
     1 file changed, 1 insertion(+)
     create mode 100644 hello.py
  • Github a login olduktan sonra orada bir repository yaratmamız gerekiyor

    Resim
  • New tuşuna bastıktan sonra repository'e bir ad vermemiz gerekli. Buradaki isim bilgisayardaki klasördeki isimle aynı olmak zorunda değil.

    Resim
  • Diğer tüm ayarlar olduğu gibi bırakılıp en altta yer alan "Create Repository" tuşuna basılınca repository yaratılmış olacaktır.

    Resim Resim
  • Github'da repository yaratarak aslında bilgisayardaki projenin gönderileceği adresi belirlemiş olduk. Bu aşamada gönderimi yapabiliriz ancak isteğe göre bir adım daha olabilir. Şöyleki github bize aşağıdaki gibi bir komut öneriyor. Bu komut mevcut çalışılan "master" branch'in adını "main" olarak değiştirir. Bu değişiklik, Git'de repository'lerin ana branch'inin "master" olmak yerine "main" olmasını sağlar. Bu, Git'in kökenlerine dayanan bir karar olarak kabul edilir ve "main" branch'inin daha anlaşılır bir ad olmasını amaçlar.

    git branch -M main
  • Aşağıdaki komut ile projemizi Github'daki repository'e adreslemiş olacağız.

    git remote add origin https://github.com/ilkayozay/ornek-proje.git
  • Son komut ile projemizi artık Github'a yükleme talimatı vermiş oluyoruz ( Github'a "push" etmiş oluyoruz).

    git push -u origin main
    Enumerating objects: 3, done.
    Counting objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 232 bytes | 77.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/ilkayozay/ornek-proje.git
     * [new branch]      main -> main
    Branch 'main' set up to track remote branch 'main' from 'origin'.

    Eğer "git branch -M main" komutu kullanılmaz ise varsayılan branch adı "master" kalacaktır. Bu nedenle branch adı değiştirilmemişse komut aşağıdaki gibi olmalıdır. Sondaki "master" a dikkat!

    git push -u origin master
    Enumerating objects: 3, done.
    Counting objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 232 bytes | 77.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    To https://github.com/ilkayozay/ornek_proje.git
     * [new branch]      master -> master
    Branch 'master' set up to track remote branch 'master' from 'origin'.
  • Yaratmış olduğumuz repository silmek istersek bunun için setting menüsüne gidilir.

    Resim
  • Açılan ekranda en alt kısımda yer alan "Danger Zone" sekmesinde "Delete this repository" tuşuna basarak repository silinebilir. Repository'nin silinmesi önemli bir işlem olduğu için onay için Github şifresi sorulacaktır.

    Resim

Toplu Halde Komutlar

git init
git add .
git commit -m "Yapılan değişikliklerin özeti"

git remote add origin https://github.com/githesap_adi/proje_repository.git
git push -u origin main

Klasör bir kere yüklendikten sonra, sonradan yapılan güncellemelerin <update> Github repo'ya atılması için sırasıyla "add" ,"commit" ve "push" yeterlidir.

Son Bir Not

GitHub üzerinde yayınladığınız projeler için "README.md" dosyası eklemek bir zorunluluk olmamakla birlikte eklenmesinin bir çok faydası vardır:

  • README dosyası, proje hakkında bilgi verir ve projenin amacını, kullanımını ve yükleme kurallarını açıklar. Bu sayede projeyi kullanan kişiler, projeyi anlamaya ve kullanmaya daha kolay başlayabilir.

  • Projenin daha profesyonel bir görünüm kazanmasına yardımcı olur.

  • README dosyası, projenin daha fazla kişi tarafından keşfedilmesine yardımcı olur.

README.md dosyası üretmek için doğrudan Github üzerinde de çalışmaya başlayabilirsiniz. Ancak bir tool kullanmak işi kolaylaştıracaktır. https://readme.so/editor bu konuda başarılı gözüküyor. Denemekte fayda var

Resim