İPUCU

TurkHackTeam Ar-Ge Tim Turkhackteam Araştırma ve Geliştirme Timinin Hazırladığı Program ve Dökümanlar...

Seçenekler

Git Nedir? GitHub Nedir? (Kullanım, Videolu Anlatım)

19-09-2018 23:01
#1
Emperor Federico - ait Kullanıcı Resmi (Avatar)
Deneyimli Yazılımcı
Üyelik tarihi:
01/2013
Nereden:
F3deR!cO.
Mesajlar:
814
Teşekkür (Etti):
32
Teşekkür (Aldı):
261
Konular:
139
Versiyon Kontrol Sistemi Nedir ? (VCS)
  • Birden fazla yazılımcının aynı anda, birbirlerinin değişiklikleriyle oynamadan bir proje üzerinde çaışabilmesine olanak sağlar.
  • İstenildiğinde eski bir kod kaydına ulaşmaya yarar.

Kod:
"12.12.2012 tarihinde X tarafından güncellenmiştir."

  • Eski sürüm ile yeni sürüm arasında karşılaştırma (compare) yapılmak istendiğinde, bize bunu sağlar ve bu tür sistemlere versiyon kontrol sistemi denir. Bununla birlikte daha birçok özelliği bulunmaktadır.
Git Nedir ?

Git de bir çeşit versiyon kontrol sistemidir. Yazdığımız projeleri bulut bilişim mantığıyla (cloud systems) bilgisayarımızda yerel olarak tutulmasını sağlar.






Linux Dağıtımları İçin Git Kurulumları

Kod:
#Debian Tabanlı Dağıtımlar İçin;
sudo apt-get install git-all


#Redhat Tabanlı Dağıtımlar İçin;
sudo yum install git-all


#DNF Paket Yöneticisi ile Çalışan Dağıtımlar İçin;
sudo dnf install git-all


#Diğer Linux Dağıtımı Kullananlar zaten iyi biliyordur :)
#Windows ve MAC için git-scm.com adresinden indirebilirsiniz.



Konfigürasyon İşlemleri (Configuration)

Konfigürasyon ayalarını yapma sebebimiz bir proje gönderdiğimiz zaman ya da proje de değişiklik yaptığımız zaman, "Bu değişiklikler kim tarafından yapıldı?" sorusu içindir.


Git kurulumu başarılı bir şekilde gerçekleşmiş mi diye kontrol ediyoruz.
Kod:
git --version



Şimdi ise Git'e kendimizi konfigüre edelim.
Kod:
git config --global user.name "İsim Soyisim"
git config --global user.email "email@email.com"




Git Çalışma Ortamı Oluşturmak ve İşlemek (Commit Etmek)





Öncelikle bir Working Directory (Çalışma Dizini) belirliyoruz, burada oluşturduğumuz projeleri Staging Area (Geçiş Bölgesi) adını verdiğimiz evreleme alanına gönderiyoruz, daha sonra gerekli kontrolleri yapıyoruz ve Git Repository'mize depoluyoruz. Olay örgümüz bu şekildedir.


Bir dizin belirleyip orayı Git çalışma ortamı haline getireceğiz.
Kod:
git init


Burada projelerimizi oluşturduktan sonra projemizi Staging Area'ya yolluyoruz, yani geçiş bölgemize.
Kod:
git add .
Kod:
#Buradaki nokta bulunduğu klasördeki tüm dosyaları kapsar, eğer tek bir proje göndermek istiyorsanız;
git add <projeadi>




Projemizin durumunu bir görüntüleyelim, bu komut bizim geçiş bölgemizde neler olup bittiğini söylüyor. Örneğin dosya eklendiyse, "Dosya eklendi, Dosya değiştirildi, Dosya silindi" tarzında.
Kod:
git status

Her şey yolunda, şimdi biz geçiş bölgesindeki projemizi(projelerimizi?) Git depomuza işleyelim, yani Commit edelim.
Kod:
git commit -m "İşleme mesajınızı buraya yazınız."



Git depomuza projemizi Commit ettik.
Loglara bakalım ve oradan da Commit'imizi görelim. Çıktısı, konfigürasyon ayalarını yaptığımız bilgiler ve tarih şeklinde gelecektir.
Kod:
git log






Projelerde Değişiklikleri Görüntüleme ve Proje Silme

Projelerimizin üzerinde değişiklik yaptığımız zaman, nelerin değiştiğini gözlemlemek için diff parametresini kullanacağız. Proje silmek için ise remove rm parametresini kullanacağız.


Working Directory ile Staging Area arasındaki değişiklikleri görmek için;
Kod:
git diff

Staging Area ile Git Repository arasındaki farklı görmek için ise;
Kod:
git diff --staged

Tek bir dosya üzerinde değişiklikleri görmek için;
Kod:
git diff <projeadı>

Çıktı olarak -Burada kodlar var. silinen koddur.
Çıktı olarak +Burada kod var. eklenen koddur.

Proje silme işleminin olay örgüsü;
Dosyayı sileriz ve tekrar Commit işlemi gerçekleştiririz.
Kod:
git rm dosyaadi
git add .
git commit -m "Commit gerçekleşiyor."


GitHub Nedir ?

Git entegreli bir bulut mantığıdır. Projelerimizi insanlara açık şekilde paylaşırız ve orada fikir alış-verişlerine olanak sağlar. Projemizde bir sorun oluştuğunda bir örneğin bir "Issues" (problem) oluşturarak çözümler, tavsiyeler alabiliriz, insanların projemize katkıları olabilir, aynı şekilde biz de faydalanıp onların geliştirmelerine katkıda bulunabiliriz.




Öncelikle üye olmamız gerekmekte. Üye olduktan sonra bilmemiz gereken belli başlı üç şey;
Watch: Bir projeyi izlememizi sağlar ondan haberdar oluruz.
Star: Projeyi yer imlerine ekleriz ve projede atılmış her adım bize bildirim olarak gelir, anasayfamıza düşer.
Fork: Bir projenin kopyasını repository olarak kendimize almaktır.





  • New Repository (+) diyerek yeni bir depo oluşturacağız.
  • Repository adımızı belirliyoruz. Boşluk kabul edilmiyor aralara "-" koyuyor. Buna dikkat ediniz.
  • Opsiyonel olarak açıklama ekleyebilirsiniz.
  • Public ve Private olarak iki seçeneğimiz var. Public herkese açık bir depo alanı oluşturmaktır. Private ise özel alanı oluşturmaktır. Private ücretlidir.(Private için GitLab kullanabilirsiniz.)
GitHub'a proje gönderirken ekstra olarak sadece uzak depo bağlantısı tanıtacağız ve pushlayacağız. (Normal Commit işlemine ekstra olarak.)
Komut istemcimizde depomuza bir takma ad belirleyeceğiz ve bunun üzerinden devam edeceğiz.
Kod:
git remote add <depoyatakmaad> <uzakdepourl>



Commit işlemlerimizi tekrar yapıyoruz ve bu sefer pushluyoruz. Push komutunu verdiğimiz zaman bizden GitHub email ve şifremizi isteyecektir.
Kod:
git add .
git commit -m "first commit"
git push -u takmaad master

.gitignore (İstenmeyen Dosyalar ve Dizinler)


Gönderilmesini, takip edilmesini istemediğimiz dosyaları veya dizinleri bunun içine koyarız ve GitHub'da bu takip edilemez hale gelir. Örneğin database gibi.
Bir .gitignore adında dosya oluşturuyoruz.(adında nokta olmak zorundadır.)
Daha sonra gönderilmesini istemediğimiz dosyanın adını yazıp kaydedip kapatıyoruz.
Tekrar commit işlemi gerçekleştiriyoruz. Oldukça basit.
Kod:
cat >> .gitignore
istenmeyendosya.py
istenmeyen/dizinler/
git add .
git commit -m ".gitignore eklendi"
git push -u takmaad master




Branchs (Dallar)

Bir proje üzerinde birden fazla yazılımcı çalışıyorsa iş kolaylığı açısından görev dağılımı yapılır ve konular belirlenir, bu konulara göre dallar ayrılır bunlara branchs denir. Herkes kendi branchinde yapması gerekeni yaptıktan sonra proje sonunda dallar birleştirilip tek bir dal haline getirilir bu işleme ise merge denir.


Kod:
#Mevcut dalları görüntülemek için;
git branch


#Dal oluşturmak için;
git branch daladi


#Dallar arası geçiş yapmak için;
git checkout daladi


#2 branch arasındaki farklılıkları görmek için
git diff dal1 dal2

Şimdi bu dalları birleştirelim;
git merge daladi


#Projemize gönderiyoruz.
git push -u takmaad daladi




Readme.md

Projemiz hakkında önbilgi veririz. Böylece insanlar projemizin içine girip bu kodlar neyin nesi demezler. Proje hakkında tanımlamaların yapıldığı kısımdır.

Kod:
# Proje Adı (Tek diez en büyük boyuttur, Diez arttıkça boy küçülür. max6)
## Proje Hakkında Bilgi
**Burası Kalın Metin**
*Burası İtalik Metin*

`Kod ise bu şekilde yazılıyor.`
[Link metni](Bağlantı adresi)






Kullanıcı İmzası
Konu BufGix tarafından (19-09-2018 23:29 Saat 23:29 ) değiştirilmiştir.

19-09-2018 23:03
#2
THE HACKER 21 - ait Kullanıcı Resmi (Avatar)
Junior Pentester
Üyelik tarihi:
03/2017
Mesajlar:
2.944
Teşekkür (Etti):
199
Teşekkür (Aldı):
908
Konular:
86
Eline Sağlık Güzel Konu Olmuş (:
19-09-2018 23:05
#3
Üyelik tarihi:
08/2016
Mesajlar:
175
Teşekkür (Etti):
18
Teşekkür (Aldı):
6
Konular:
33
Eline sağlık gayet yararlı bir konu
19-09-2018 23:05
#4
k3~ - ait Kullanıcı Resmi (Avatar)
k3~
AR-GE Tim Lideri
Üyelik tarihi:
10/2015
Mesajlar:
2.877
Teşekkür (Etti):
1736
Teşekkür (Aldı):
3366
Konular:
198
Emek olduğu ortada. Eline, koluna sağlık
Emperor Federico Teşekkür etti.
19-09-2018 23:08
#5
BufGix - ait Kullanıcı Resmi (Avatar)
Kıdemli Yazılımcı
Üyelik tarihi:
08/2015
Nereden:
Phobos/Space
Mesajlar:
1.022
Teşekkür (Etti):
314
Teşekkür (Aldı):
441
Konular:
74
Eline sağlık
Kullanıcı İmzası
~Cahile gelmez benden hayır
19-09-2018 23:10
#6
ALcatraz' - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
05/2013
Nereden:
İstanbul
Mesajlar:
4.264
Teşekkür (Etti):
968
Teşekkür (Aldı):
1752
Konular:
1023
Alıntı:
KeyLo99´isimli üyeden Alıntı Mesajı göster
Emek olduğu ortada. Eline, koluna sağlık
Bu konuda diğer Ar-ge kategorisinde olan 2 konudan daha ayrıntılı, zaten sabitte bir tanesi SeZerin. Iki konunun kaldırılıp, bunun sabitte kalması önerimdir

Ellerine sağlık
Kullanıcı İmzası
En çok ne zoruma gidiyor biliyor musun? "Ülkem" diye kaydetmiştin beni telefonuna. Kalbimi parçalara ayırdın, hani vatan bölünmezdi?

Yokluğun bilinç altımdayken , varlığın kimin altında merak ediyorum.
k3~ Teşekkür etti.
20-09-2018 17:21
#7
sqruhqn - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2016
Nereden:
Ötüken
Yaş:
17
Mesajlar:
204
Teşekkür (Etti):
113
Teşekkür (Aldı):
22
Konular:
10
Hocam elinize sağlık ayrıntılı ve güzel bir konu
Kullanıcı İmzası
Aklının almadığı hayallerde değil,kafanin basmadığı gerçeklerde yaşıyorum
21-09-2018 21:34
#8
ATABÖRÜ - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
07/2017
Nereden:
Ötüken
Yaş:
82
Mesajlar:
3.372
Teşekkür (Etti):
950
Teşekkür (Aldı):
903
Konular:
303
Her şeyine sağlık emek var
Kullanıcı İmzası
Ey Türk milleti! Kendine dön! Sen yükseltmiş Bilge Kağan'ına, hür ve müstakil ülkene karşı hata ettin, kötü duruma düşürdün. Milletin adı, sanı yok olmasın diye Türk milleti için gece uyumadım, gündüz oturmadım. Kardeşim Kül Tegin ve iki şad ile ölesiye bitesiye çalıştım.
21-09-2018 21:43
#9
Phemis - ait Kullanıcı Resmi (Avatar)
Junior Hunter
Üyelik tarihi:
12/2017
Mesajlar:
2.247
Teşekkür (Etti):
866
Teşekkür (Aldı):
608
Konular:
152
Ellerine Sağlık Dostum Çok Yararlı Bir Konu
21-09-2018 22:03
#10
'Flash - ait Kullanıcı Resmi (Avatar)
Researcher
Üyelik tarihi:
07/2017
Nereden:
røøt@:~#
Mesajlar:
821
Teşekkür (Etti):
1248
Teşekkür (Aldı):
216
Konular:
30
Ellerine emeğine sağlık.
Kullanıcı İmzası
Elbet bir gün.

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı