GitHub, sürüm kontrol sistemi olarak Git kullanan yazılım geliştirme projeleri için web tabanlı bir depolama servisidir. GitHub özel depolar için ücretli üyelik seçenekleri sunarken, açık kaynaklı projeler için ücretsizdir. GIT sürüm kontrol sistemini kullanan her bir çalışma dizini (proje), internet erişimi ya da merkezi bir depo olmaksızın tüm tarihçeyi tutan ve sürüm kontrol sisteminin tamamını içinde barındıran tam yetkili birer depodur.
Yeni proje oluşturmak, Projeye kişiler eklemek, kişilere görevler atamak, kişilerin analizlerini tutmak, ana projeyi değiştirmeden yeni kodları test etmek için dallar (Branch) oluşturmak, Dallar üzerinde çalışırken projeyle bu değişiklikleri birleştirmek (merge), yapılan işlerle ilgili yorum düzenlemeleri gibi pek çok şey yapabilirsiniz.
Ubuntu gibi Debian-tabanlı bir sistemdeyseniz, apt-get'i kullanabilirsiniz:
$ sudo apt-get install git
Git'i kurduğunuzda yapmanız gereken ilk şey adınızı ve e-posta adresinizi ayarlamaktır.
$ git config --global user.name "isminiz"
$ git config --global user.email mailiniz
$ssh-keygen komutuyla ssh anahtarını oluşturuyoruz.
Ardından oluşturduğumuz ssh anahtarını kopyalayalım .ssh/id_rsa.pub dosyasını açın ve tümünü seçip kopyalayın, kopyaladığınız key’i github hesabınıza ekleyin. “settings” butonuna tıklayın, sonra SSH keys bölümüne girin, daha sonra “Add SSH key” butonuna basarak key'i oraya kaydedin.Bundan sonra uzak depoya dosya gönderirken şifre girmenize gerek kalmayacak.
Eğer uzak depoya dosya gönderirken Permission denied (publickey) hatası alıyorsanız https://help.github.com/articles/generating-ssh-keys/ yardımcı olacaktır.
Git projesi edinmenin başlıca iki yolu vardır.
Varolan bir projeyi Git'e aktarmak
Sunucuda yer alan bir Git yazılım havuzunu klonlamaktır.
Varolan Bir Projeyi Git'e Aktarmak
Varolan bir projeyi Git'e aktarmak
Sunucuda yer alan bir Git yazılım havuzunu klonlamaktır.
$ mkdir
komutu ile trygit adında bir dizin oluşturalım.$
cd ile trygit dizinine geçiş yapalım.Var olan bir projenizi sürüm kontrolü altına almak istiyorsanız, projenin bulunduğu klasöre gidip aşağıdaki komutu çalıştırmanız gerekir:
$ git init
Bu, Git iskeletini içeren
.git
adında bir klasör oluşturur. Yeni bir çalışma dizini başlatmış oluruz.Bu noktada, projenizdeki hiçbir şey sürüm kontrolüne girmiş değildir.
Bir dosya oluşturup o dosyayı gönderelim.
$ gedit something.py
Depoya eklemek istediğimiz dosyayı index denilen git geçici alanına eklemek için
git'ten something.py dosyasının bir görüntüsünü almasını isteyelim.
Bu görüntü, git'in "index" adını verdiği geçici bir alanda saklanır.
$ git add something.py
$ git commit -m "something.py
eklendi."
Şimdi, projemizin ilk sürümünü git içinde sakladık.
Dosyamız yerel depoya atıldı.Ancak henüz uzak depoya ulaşmadı.
Bu adımda github hesabımızdan Repository oluşturalım .
https://github.com/user-name/repository-name şeklindeki URL'yi(HTTPS clone URL'den) kopyalayalım.
Uzak depo eklemek için :
https://github.com/user-name/repository-name$ git add remote origin
Şimdi değişikliklerinizi uzak sunucuya gönderebiliriz.
git push <REMOTENAME> <BRANCHNAME>
$ git push origin master
Commitledikten sonra git push origin master diyerek uzak depoya dosya ekleyebilirsiniz.(Eğer master branch’ına göndereceksek)
Yaptığınız değişikliklerin geçmişini aşağıdaki komut ile görebilirsiniz:
- $ git log
Her adımda yaptığınız değişikliklerin tamamını görmek için şunu kullanın:
- $ git log -p
Genellikle, değişikliklerin özetini görmek her adımı hatırlamakta faydalıdır.
- $ git log --stat --summary
Nelerin teslim edilmek üzere olduğunu git-diff komutunu --cached seçeneği ile kullanarak görebilirsiniz:
- $ git diff --cached
Dosya.txt adında dosya oluşturup uzak depoya gönderelim. Sonra tekrar o dosyayı açıp içinde düzenlemeler yapalım. Uzak depoya göndermeden yaptığımız değişikliklere bakalım. Değişikliklere bakmak için $ git diff --cached kullanalım. Dosyanın eski ve yeni içeriğini bize gösterdi.Commit mesajı ekleyip nelerin değiştirildiğini yazıp uzak depoya yollayalım.
Branch'ler İle Çalışmak
Git'de branch kullanımı tercihe bağlı değildir, aslında farkında olmasanız bile projeniz üzerinde çalışırken her zaman aktif tek bir branch üzerinde çalışırsınız. Git'de projenizi ilk oluşturduğunuzda Git varsayılan olarak sizin için master adı veilen bir branch oluşturur ve siz bu branch üzerinde çalışmaya başlarsınız. Branch'ler farklı bağlamlarda çalışmaktan kaynaklanabilecek karmaşanın önüne geçmek için biçilmiş kaftandır.git branch mybranch komutunu çalıştırdığınızda git sizin için projenizdeki dosyaların o anki halini barındıran mybranch isimli bir branch oluşturur.
Git git branch komutu ile oluşturduğunuz yeni branch'i otomatik olarak aktif hale getirmez.Branch'inizi oluşturduktan sonra git branch komutunu çalıştırdığınızda git size projeniz için oluşturduğunuz tüm branch'leri listeler ve aktif olan branch'i başınada * simgesi olacak şekilde gösterir.
Local Bir Branch'i Yayınlamak
$git push origin mybranch komutuyla localde bulunan mybranch branch'ını uzak depoya göndeririz.
Master branch'ına geçtikten sonra mybranch dalında yapılan değişiklikleri master'da birleştirmek için $git merge mybranch komutunu kullanalım.
Branch'leri Silmek
Remote repository'ye erişip branchleri kontrol ederseniz mybranch isimli branch'in sunucuda hala durduğunuz göreceksiniz. $git branch -d mybranch komutusuncudaki branch'i değil yerel bilgisayarınızda remote branch
bilgilerini siler. Bu değişikliğin suncuda da geçerli olması için yani
sunucudaki branch'i de silmek için git push origin :mybranch komutu ile değişikliği bir anlamda remote repositry'de yayınlamanız gerekiyor.
- Projenizde birden çok uzak uçbirim varsa,
$ git remote -v
komutu
hepsini listeleyecektir.
Github'daki Projeyi Forklamak
Github'da destek olmak istediğiniz bir depo varsa, doğrudan o depoya yazma hakkınız olmadığı için, önce kendinize bir kopyasını almanız gerekiyor. Forklamak istediğiniz depoya gittiğinizde, sağ üst köşede, fork linkini göreceksiniz. Bunu denemek için, https://github.com/octocat/Spoon-Knife adresindeki depoyu forklayabilirsiniz.
Eğer projeyi forklarken şu hatayı alıyorsanız:
Error Code 403 fatal: HTTP request failed
Çözümü: git remote set-url origin https://yourusername@github.com/user/repo.git
Projeyi forkladıktan sonra HTTPS clone URL'yi kopyalayalım.
Bir dizin oluşturalım ve $ git clone ile oluşturduğumuz dizine klonlayalım.
Oluşturduğumuz dizinin içinde forkladığımız Spoon-Knife deposu gelecektir. $ cd Spoon-Knife komutuyla dizinin içine girelim . $ls ile içindeki dosyalara bakalım.3 adet dosya gelmiş,1 tane biz oluşturup göndermeye çalışalım. Commitlemeden önce $ git add demediğim için untracked files çıktısı verdi ,çünkü index'e ekleyeceğimiz dosyanın görüntüsünü kaydetmedik. $git push origin master ile yaptığımız değişiklikleri uzak depoya gönderelim.
Şimdi fork.txt dosyası eklendi. Peki bizim yaptığımız değişikliği deponun sahibi nasıl görebilir?
GitHub Pull Request
GitHub tarafında pull request yöntemi fork ve pull
modeli ile gerçekleşmektedir. Yapılan katkıların bir projeye çekilmesi
için gerekli proje ilk önce GitHub üzerinden fork (çatallama) işlemine
tabi tutulmalıdır. Kopyalanan (fork’lanan) proje diğer geliştiricinin
hesabında oluştuktan sonra yapılacak katkının önemliliğine göre projeyle
lokalde çalışılması için kendi makinesine bunu klonlaması
gerekmektedir. Yapılan geliştirimler ile oluşan işlem akışı Git
aracılığıyla öncelikle kendi projesine (origin) gönderilir daha sonra
GitHub servisiyle asıl projeye (upstream) katkıların çekilmesi isteği
ile sonlanır.
Github'ı öğrendikçe buraya yazmaya devam edeceğim. Umarım faydalı olmuştur.İyi Çalışmalar
Çok teşekkürler faydalı oldu gerçekten.
YanıtlaSil