Git ve GitHub'a Giriş
Tags: git, github
Published: 2020-05-05 19:48:09

## Git nedir?
Git, 2005 yılında Linus Torvalds tarafından geliştirilen bir tür sürüm kontrol yazılımıdır.

## Sürüm Kontrolü nedir?
Sürüm kontrolü, bir ya da daha fazla dosya üzerinde yapılan değişiklikleri kaydeden ve daha sonra belirli bir sürüme geri dönebilmenizi sağlayan bir sistemdir. Yalnızca bir yazılım projesinde kaynak kodların sürümlendirilmesi için değil, başka dosya tipleri için de kullanılmaktadır.

Sürüm yönetimi, temel olarak bir dosyanın değişen tüm durumlarının Sürüm Veritabanına yazılmasını içermektedir. Dosya veya dosyalar üzerindeki her değişiklik veritabanına gönderilerek dosya veya dosyaların yeni bir sürümünü oluşturmaktadır. Bu yeni sürümler, programcının veya sistemin başka hatalarında geriye dönüş için destek sağlamaktadır.

Yerel sürüm yönetim sistemlerinin gelişmesiyle sürüm yönetiminin merkezileşmesi düşünülmüştür. Bu düşünceye göre merkezi bir sürüm yönetim veritabanı bulunup, birden fazla bilgisayar veya kullanıcıdan gelen değişikliklerin sürüm yönetimi veritabanına erişerek yeni sürümlerin oluşmasını baz almaktadır.

Dağıtık sürüm kontrol yönetimindeki temel avantajlardan birisi sürüm yönetim veritabanının yalnızca merkezi bir sunucuda olmaması, tüm kullanıcılarda tüm sürüm veritabanının bulunmasıdır. Yani bir anlamda merkezileşmesinin avantajını da kullanarak, verilerin dağıtılmasını ve düzenli bir biçimde kontrol edilmesine neden olmaktadır.

Bu sistem uzak uçbirimdeki yazılım havuzuyla rahatlıkla çalışmaya neden olmaktadır, böylece aynı proje için aynı anda farklı insan topluluklarıyla farklı biçimlerde ortak çalışmalar yürütebilir. Bu, birden çok iş akışı ile çalışabilmenizi sağlar.

## GitHub'a giriş

GitHub'a yeni başlayan birisi için hazırlanmıştır. Detay konulara çok fazla girilmeden özet geçilmiştir. Detay konulara girebilmek için zamanla başka kaynaklara bakmanız gerekmektedir.

***NOT***: Eğer ilk defa GitHub ile tanışıyorsanız ve bir projeye dahil olmak istiyorsanız aşağıdaki 5 maddeden a şıklarından ilerlerseniz sorun yaşamayacaksınız. Daha sonra yeni git projeleri açarken ise b şıklarını takip edebilirsiniz.

### 1. Bilgisayarınıza Git Kurulumu ve kullanımı

Debian tabanlı bir dağıtım kullandığınızı düşünerek ilk olarak yönetici yetkisine sahip bir kullanıcıdan git kurulur.

```bash
sudo apt install git
```

Daha sonra Git üzerinde kendinizi tanıtmanız gerekir:

```bash
git config - -global user.name “Adınız Soyadınız”
git config - -global user.email “email@adresiniz.com”
```

### 2.a) GitHub'taki bir projeyi bilgisayarınıza çekmek

Aşağıdaki komutu girmeniz yeterlidir. Tabi ki uzak sunucu adresim yazan yere kendi ilgilendiğiniz github.com projesindeki git adresini yapıştırmanız gerekmektedir. (örneğin: https://github.com/aciklab/github-giris.git)

```bash
git clone https://github.com/aciklab/github-giris.git
```

### 2.b) Yerel klasör üzerinde git oluşturmak

Clone yapmazsanız ve boş bir klasörü GitHub'taki deponuza göndermek isterseniz ilk olarak bulunduğunuz klasöre git ayarı yapılmas ıgerekmektedir. Bu aşağıdaki gibi yapılabilir:

```bash
git init
```

### 3. Projede değişiklikler yapmak

İşte burası size ve programlama yeteneğinize kalmış.

### 4. Yerel projeye commit eklemek

Değişiklik yaptığınız dosyayı önce local git'e commit etmeniz gerekmekte (Eğer tüm dosyaları add yapmak isterseniz * koyabilirsiniz)

```bash
git add dosya_ismi
git commit -m "Yapılan ilk değişiklikler"
```

### 5.a) Varolan Projeyi GitHub'a göndermek

Dosyaları yerel depoya atmak için: (master yerine başka bir branch'e atmak isterseniz onu da yazabilirsiniz)


```bash
git push origin master
```

Dosyaları GitHub'ta kontrol edip üzerine göndermek için pull kullanılır. pull komutu aslında fetch ve merge komutlarının bir karışımıdır. fetch GitHub'ta değişiklik olup olmadığını kontrol edip merge iki kodu birleştirmektedir:

```bash
git pull
```

### 5.b) Projeyi ilk defa GitHub'a göndermek

Eğer projeyi ilk defa GitHub'a gönderiyorsanız aşağıdaki gibi ayarlayıp, gönderebilirsiniz:

```bash
git remote add origin https://github.com/aciklab/test1.git
git push -u origin master
```

Bir sıfırdan büyükür