[MAGP] [Anlatım] GitHub Kullanımı (Ucbirim ve Web)

Sponsorlu Bağlantılar

HakanSeven12

HakanSeven12

Üye
    Konu Sahibi
[MAGP] [Anlatım] GitHub Kullanımı (Ucbirim ve Web)
Artık konularıma kendi bloğumdan devam edeceğim. Bloğa alttaki resime tıklayarak ulaşabilirsiniz.



Git Nedir?


Ekli resimleri görüntülemek için kayıt olmalısınız

  • Proje geliştirirken, kodlarımızı bir klasörde yedekliyoruz. Ancak yedekler çoğaldıkça hem yedekler karışmaya başlıyor hem de alanımız azalıyor. Bu problemleri çözmeye yarayan yardımcı programlar var. Bunlar bizim çalışmalarımızın yedeğini bizim yerimize alarak hem yerden, zamandan hem de kargaşadan tasarruf etmemizi sağlıyor. Bu araçlara sürüm kontrol sistemleri ya da versiyon kontrol sistemleri deniyor.
  • Projemiz ya da herhangi bir klasör üzerinde yapılan değişiklikleri zamanları, kullanıcı bilgisi, versiyon numarası gibi bilgilerle birlikte tutuyorlar.

  • Projenin yayına çıkacak kısmının beklemesini istiyorsak ve üzerinde de bir şeyler denemek istiyorsak o zaman çalışan kopyamız belli bir bölümlemeyle (branching) ayrılarak diğer kopyalar üzerinde rahatça çalışmamız sağlanıyor.İstersek bu kopyayı çalışabilir durumdaki kopya ile birleştirebiliyoruz.

  • Grup halinde çalışmalarda herkesin yaptığı değişiklikleri görebiliyoruz.

  • Git dağıtık bir yapı kullanıyor.Diğer versiyon kontrol sistemleri merkezi bir yapı kullanırken ve bu yapıya sürekli bağlı olmak gerekirken git’te her kullanıcıda bütün bir kopya mevcuttur ve internet olmayan ortamlarda dahi proje geliştirilmeye devam edilebiliyor.
  1. Git gerçekten çok hızlı
  2. Git kaynak depoları disk üzerinde çok az yer kaplıyor.
  3. Git ile bölümleme(branching) ve birleştirme(merging) işlemleri kolay ve hızlı
  4. Git çevrimdışı(offline) olarak kullanılabiliyor.
  5. Git dağıtık (distributed) olduğu için her bir geliştiricinin makinesinde proje bütün geçmişi ile birlikte tutulabiliyor. İlk başta bunun işlemleri yavaşlattığı ve disk israfı olduğu düşünülebilir. Fakat git'in oldukça etkin algoritmalar kullanması sayesinde bu sorunlar hiç yaşanmıyor.
Git Kurulumu
Git kurulum paketi Ubuntu depolarında mevcut.Alttaki kodla bu depolardan paketi kuruyoruz.

Kod:
sudo apt-get install git-core

Paketi kurduktan sonra git yapılandırmasına geçiyoruz.

sitesinde bir hesap açıyoruz. Aşağıdaki bölümleri hesabınıza göre doldurun.

Kod:
git config --global user.name “Kullanıcı-adı”
git config --global user.email “email-adresi”

Bilgisayarımız ve Github arasında güvenli bir bağlantı sağlayabilmek için ssh-key kullanmalıyız. ssh-key Github'a bağlanırken herseferinde parola girmemek için kullanılır. Bunun için bilgisayarımızda ssh-key oluşturmamız gerek.Önce var olan bir key var mı diye bakalım.

Kod:
cd ~/.ssh
ls # config id_rsa id_rsa.pub known_hosts

Daha önce oluşturulmuş bir key'imiz varsa onu silip yeni oluşturabiliriz.

Kod:
mkdir key_backup
cp id_rsa*
rm id_rsa*

Yeni bir ssh key oluşturmak için :

Kod:
ssh-******

Creates a new ssh key using the provided email
Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa):
Karşımıza yukarıdaki kısım geliyor ve onu enter ile geçiyoruz...

Kod:
Enter passphrase (empty for no passphrase): Parola-yazın
Enter same passphrase again: Parolayı-tekrar-yazın

Burada ise bizden, ssh-key oluşturmak için(belli bir algoritma ile oluşturulur) anahtar bir kelime yazmamız isteniyor. İstediğiniz bir kelimeyi yazın ama unutmayın yazdığınız şeyi.

`

Your identification has been saved in /home/you/.ssh/id_rsa.
Your public key has been saved in /home/you/.ssh/id_rsa.pub.
The key fingerprint is:
01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db email@adresiniz `
Buna benzer bir ekran çıktısı aldıysak işlemi doğru tamamlamışız demektir.
  • Şimdi ~/.ssh/id_rsa.pub ' da oluşmuş olan ssh-key 'imizi github'a eklememiz gerekli.

  • Önce Home/.ssh dizinindeki id_rsa.pub dosyasını açıp içindeki tüm satırları kopyalıyoruz. Github'ta settings'te sol taraftaki SSH key bölümüne girip oraya add SSH key butonuna tıklıyoruz. SSH keyimixe bir isim verip kopyaladığımız koduda alt kutucuğa ekliyoruz. Add key butonuna basarak keyimizi ekliyoruz.
Ekli resimleri görüntülemek için kayıt olmalısınız


Bilgisayar ile Github arasında bağlantıyı kurmak için alttaki kodu giriyoruz.

Kod:

The authenticity of host 'github.com (207.97.227.239)' can't be established.
# RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
# Are you sure you want to continue connecting (yes/no)?

Yukardaki soruya "yes" diyip geçiyoruz. Önünüze gelen parola ekranına anahtar oluştururken kullandığınız parolayı yazıp onaylayın.

# Hi kullanıcı-adı! You've successfully authenticated, but GitHub does not
# provide shell access.

Böylece bağlantıyı kurmuş olduk.


Git Kullanımı

Dosya Çekme

Git üç ağaç kolu şeklinde çalışıyor diyebiliriz.İlk kısım çalıştığımız dizin,ikinci kısım yereldeki depomuz,diğer kısım ise uzak depodur.Şimdi clone komutu ile uzaktaki projeyi çekeceğiz.

Kod:
git clone uzak_sunucu_adresi

Bu adres github'ta proje sayfamızda bulunmakta. bknz.

Proje tüm değişiklikleri ile artık bilgisayarımızda.

Bölümler (Branches)

Git'te default olarak master bölümü gelir.İstersek başka bölümler oluşturabiliriz ve silebiliriz.

Ekli resimleri görüntülemek için kayıt olmalısınız


Kod:
#Bölüm listesi
git branch

# Yeni bölüm oluşturmamızı sağlar.
git branch yeni_bölüm_ismi

# İstediğimiz bölüme geçmemizi sağlar.
git checkout bölüm_ismi

# Bölüm siler.
git branch -D bölüm_adı

Birden fazla bölümümüz varken iki bölümdeki değişiklikleri birleştirmek için merge komutunu kullanıyoruz.

Kod:
git merge bölüm_adı

Bu komut ile bulunduğumuz branch, burada ismini verdiğimiz branch ile birleşmiş oluyor. Merge işlemi iki farklı geliştirici ortak değişiklikleri düzenlemiş ise çakışmalara yol açabilir.Buna dikkat etmek gerekir. Değişiklikleri birleştirmeden önce, önizleme yapmak için;

Kod:
git diff kaynak_bölüm hedef_bölüm

Dosya Oluşturma ve Depoya Dosya Ekleme

Yeni dosya oluşturmak için;

Kod:
vim dosya-adı

Ekli resimleri görüntülemek için kayıt olmalısınız


Projemize ilk düzenlemeyi yapalım:

Öncelikle depoya eklemek istediğimiz veya daha önce eklenmiş,değişiklik yapılmış dosyayı index(hazırlık alanı) denilen git geçici alanına eklemeliyiz.

Kod:
#Hazırlık alanına dosya ekle
git add dosya_ismi

# Bütün değişen ve yeni dosyaları hazırlık alanına ekle
git add .

# değişiklik olmuş veya silinmiş dosyaları hazırlık alanına ekle
git add -u

Şimdi bu dosyanın geçici alandan alınıp uzak sunucuya gönderilebilmesi için alttaki kodun yazılması gerekli.

Kod:
git commit -m"commitin içeriğini anlatan mesajımız"

Böylece dosyamız uzak sunucuya atıldı.Ancak henüz değişiklik uygulanmadı.Değişikliklerin uygulanabilmesi için alttaki kod ile değişikliğin hangi bölümde yapılacağını göstermemiz lazım:

Kod:
git push origin bölüm-adı
  • Bu komut ile beraber yaptığımız değişiklikler uzak depoya gönderilmiş oldu.
    • Bu şekilde proje arkadaşlarımızın yaptığı değişiklikleri kendi yerel depomuza çekmek için ise:
Kod:
git pull

Düzenleme geçmişini görmek için alttaki kodu kullanabilirisiniz.

Kod:
git log

Dosya Silme
Düzenlediğimiz bir dosyayı silmek için :

Kod:
git rm dosya_adı git push origin bölüm-adı

Bu komut ile dosya silinir. Ancak dosyayı geri döndürmek mümkündür ve dosya silindikten sonra düzenleme mesajları tutulmaya devam eder. Dosyayı geri döndürme ise dosyanın loglarının tutuluyor olması ile mümkündür.

Kod:
git revert silinen_dosya_log_id

Son Kayıt İşlemini Değiştirmek
Eğer kaydı çok erken yapmışsanız, bazı dosyaları eklemeyi unutmuşsanız ya da kayıt mesajında hata yapmışsanız, sık rastlanan düzeltme işlemlerinden birini kullanabilirsiniz. Kaydı değiştirmek isterseniz, commit komutunu --amend seçeneğiyle çalıştırabilirsiniz:

Kod:
git commit --amend

Bu komut, hazırlık alanındaki değişiklikleri alıp bunları kaydı değiştirmek için kullanır. Eğer son kaydınızdan beri hiçbir değişiklik yapmamışsanız o zaman kaydınızın bellek kopyası aynı kalacak ve değiştireceğiniz tek şey kayıt mesajı olacaktır.

Hazırlanmış Bir Dosyayı Hazırlık Alanından Kaldırma
benchmarks.rb dosyasını bu öneriye uygun olarak hazırlık alanından(index) kaldıralım:

Kod:
$ git reset HEAD benchmarks.rb
benchmarks.rb: locally modified
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
# modified: README.txt
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
# modified: benchmarks.rb

"benchmarks.rb" dosyası hazırlık alanından kaldırıldı ama hâlâ değişmiş olarak görünüyor.

Dosya Düzenlemesini(commit) Geri Alma
Yanlış birşey yapmanız durumunda lokal değişiklikleri geri almak için;

Kod:
$ git checkout -- benchmarks.rb
$ git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
# modified: README.txt

Gördüğünüz gibi değişiklikler çöpe atıldı. Bunun tehlikeli bir komut olduğunu aklınızdan çıkarmayın. Dosyaya yaptığınız bütün değişiklikler şimdi yok oldu.

Tüm Kayıttan Bir Dosyayı Kaldırma

Kod:
$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten

"passwords.txt" adlı dosyayı tüm geçmişten kaldırmak için filter-branch seçeneği olan "--tree-filter" kullanılabilir.

Git'de Eski Sürüme Geri Dönme

Kod:
$git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me
Date: Thu Nov 4 18:59: 41 2010 -0400

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me
Date: Thu Nov 4 05:13: 39 2010 -0400

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me
Date: Thu Nov 4 00:55:06 2010 -0400

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me
Date: Wed Nov 3 23:56:08 2010 -0400

Bu çıktıları gördükten sonra biz "Nov 3" deki eski sürüme dönmek isteyelim. Yapmamız gereken adımlar şunlardır:

Kod:
git checkout 0d1d7fc32

ya da eğer geri döndüğümüzde düzenleme yapmak istiyorsak, oraya gidip yeni bir bölüm oluşturmamız gerekir ki bunun için gereken komut:

Kod:
git checkout -b old-state 0d1d7fc32

Öte yandan, eğer o zamana kadar yaptığımız her şeyden kurtulmak istiyorsak iki olasılık vardır. Birincisi; eğer henüz düzenleme yayınlamadıysak, sıfırlamak basitçe:

Kod:
#Bu yerel değişiklikleri yok eder
#Saklamak isteyip düzenleme yapmadığımız iş varsa yapmayınız
$ git reset --hard 0d1d7fc32
#Alternatif olarak işi saklı tutmak için
$ git stash
$ git reset --hard 0d1d7fc32
$ git stash pop
#Bu değişiklikleri kaydeder, o halde sıfırlandıktan sonraki parçayı yeniden uygular
#Eğer bir şeyler değiştiyse çakışmaları birleştirebilirsin.

Öte yandan, eğer çalışma yayımlandıysa, dalın sıfırlanmasını istemezsin. Bu durumda gerçekte de düzenlemeyi eski haline döndürebilirsin. Git ile, geri dönme işleminin(revert) çok özel bir anlamı vardır: bu durumu dengelemek için ters bir düzeltmeyle yeni bir commit oluşturun. Bu şekilde yeniden bir tarih yazmamış oluruz.
Kod:
#3 tane geri dönüş düzenlemesini oluştururuz
$ git revert 0766c053 25eee4ca a867b4af

# geri dönüş düzenlemelerinden birine geçiş yapmamızı sağlar
$ git checkout 0d1d7fc32

#en sonda da ne yaptığınızı en iyi şekilde açıklayan bir mesaj yazınız
$ git commit
 

Ekli dosyalar

Son düzenleme:
  • Beğen
Tepkiler: eren2934


Üst Alt