Bilişim dünyasına kaliteli, özgün ve Türkçe içerikler kazandırmayı hedefleyen bir platform..

friends friends friends

Git

Git

Git » versiyon kontrol ve kaynak kod yönetim sistemidir. Git ve Github aynı şey değildir. Git, version kontrol sistemidir. Github ise git ile uyumlu çalışabilen bir depolama alanıdır. Github gibi depolama hizmeti veren başka siteler: Gitlab ve Bitbucket

Git, Linus Torvalds tarafından tasarlanıp geliştirilmiş ve GNU Genel Kamu Lisansı’nın 2. sürümüyle lisanslanmış bir özgür yazılımdır.

Git Downloads

Git kurulumu oldukça basittir. -https://git-scm.com/downloads sayfasından git programı indirilir. İşletim sisteminize göre indirme yapmalısınız.

Git Kurulum macOS

Terminalinizi açın ve git --version yazın. Eğer git kurulu ise git verison 2.21.0 (Apple Git-122.2) gibi bir uyarı alırsınız. Aksi halde gelen adımları takip ederek yeniden kurnamız gerekecek.

Git Kurulum Windows

Git programı indirildikten sonra kurulum aşamasında Use Git from Git bash only seçilir. Diğerleri next next.

Git Seçenekleri

Git kurulumu bittikten sonra, bilgisayarda arama yaptığımızda birden fazla git seçeneği gelecektir. Bunlar:

  1. Git GUI Görsel ara yüzü sunar
  2. Git Bash Metin tabanlı ara yüz sunar.(Bunu kullanacağız)
  3. Git CMD Metin tabanlı, Bash'den farklı syntax

Başlangıç

Şimdi Bash seçeneğini seçelim, bir komut penceresi gelecek, burada kullanıcı adı ve email bilgilerimizi gireceğiz.

git config --global user.name "Your Name"
git config --global user.email "youremail@gmail.com"

Şimdi emin olmak için kullanıcı adımızı ve mail adresimizi çağıralım.

git config --global user.name
git config --global user.email

cevaplar doğru geldiyse sorun yok demektir.

Bazı Temel Komutlar

İlk git projesi için Bash terminalini açalım, bazı temel komutları deneyelim:

  • pwd bulunduğunuz dizini verir
  • ls listeleme
  • cd change directory, başka dizine geçme
  • cd.. bir önceki dizine geçer
  • clear ekranı temizler
  • ctrl+L ekranı temizlemenin kısayolu

İlk Proje Klasörü

Şimdi masaüstünde git için bir proje klasörü oluşturalım, adı ilk_git_projem olsun. Bu klasör içine index.html adında bir dosya oluşturalım ve içine basit HTML kodları yazabiliriz.

<!DOCTYPE html>
<html>
<head>
<title>İlk Git projem</title>
</head>
<body>

<h1>İlk Git projem</h1>
<p>Sabırsızlanıyorum, artık başlayalım.</p>

</body>
</html>

Öncelikle, proje klasörümüz masaüstünde olduğu için, komut kullanarak masaüstüne geçelim:

cd desktop

ilk_git_projem klasörü içine komut kullanarak girelim,

cd ilk_git_projem

ilk_git_projem adındaki klasörün içine girmiş olduk, şimdi klasör içinde ne var ne yok listeleyelim:

ls

Klasör içinde az önce oluşturduğumuz index.html dosyası olduğu için sadece 1 tane dosyanın adının gelmesi gerekiyor. Klasör içinde ne var ne yok baktıktan sonra diğer adıma geçelim.

Git projesine çevirme

ilk_git_projem adındaki klasörü git projesi yapmalıyız, artık bu klasör bir uzaylı kimliği kazanacak. Proje klasörümüz içinde olduğumuzdan eminsek aşağıdaki komut satırını kullanarak projenizi git projesine çevirebilirsiniz.

git init

Cevap olarak aşağıdaki ifadeyi göreceğiz.

Initialized empty Git repository in C:/Users/Kullanici_adi/Desktop/ilk_git_projem/.git

Evet klasörün içinde soluk renkte .git adında bir klasör oluşmuş olmalı. Eğer göremiyorsanız "Gizli dosya, klasör ve sürücüleri göster" ayarlarını aktif etmelisiniz. .git uzantılı dosyayı bizim depomuz olarak düşünebilirsiniz.

Ya da gizli dosyaları listelemek için aşağıdaki komutu kullanabiliriz.

ls -a

Git Sistemi Nasıl İşliyor?

Çalıştığımız dizindeki dosyaları hemen git reposuna atmak isteyebiliriz ancak sistem böyle işlemiyor. Dosyalarınız öncelikle stage denilen ara bir dizine(geçiş bölgesine) geliyor. Aslında dosyalar 3 dizine ayrılıyor:

  1. Working Directory(Çalışma dizini)
  2. Stage(Geçiş Bölgesi)
  3. Repository

Ancak sırasıyla bazı komutlar kullanarak dosyalarımızı repository'e gönderebiliriz. Aşağıda bunu anlatan bir görsel var.

Git Workflow
Git Workflow

Stage dizinine(Geçiş bölgesine) 1 tane dosya göndermek istersek aşağıdaki komutu kullanabiliriz:

git add file_name

Stage dizinine(Geçiş bölgesine) tüm dosyaları göndermek istersek aşağıdaki komutu kullanabiliriz:

git add .
//dizindeki tüm dosyaları stage ekranına atar

Şimdi Stage dizininden((Geçiş bölgesinden) Repository dizinine dosya gönderelim, beraberinde mesaj yazabiliriz:

git commit -m "buraya mesaj yazabilirsiniz."

Git tarafından projenin mevcut bir kopyası oluşturuldu, yukarıdaki komutu çalıştırınca şöyle bir cevap geldi:

[master (root-commit) bcbbb43] stage dizininden repository dizinine commit komutu ile dosyaları atıyorum
 1 file changed, 12 insertions(+)
 create mode 100644 index.html

Github Üyeliği ve Yeni Repository Oluşturmak

Git ve Github ayrı şeyler olduğu için şu anda henüz Github hesabınızda bu değişiklikler görünmeyecektir. Öncelikle Github'a üye olmanız gerekiyor. Daha sonra Sağ üstte (+) bulunan Create New Repository butonuna tıklayarak github üzerinde bir repository oluşturun.

Github'a Proje Gönderme(Yerel Bilgisayardan)

Github üzerinde hesabınız üzerinden repository oluşturduysanız url'si şöyle olmalıdır: https://github.com/your_name/repository_name.

Daha sonra terminalden aşağıdaki gibi komutumuzu yazıyoruz, Bu komut ile öncelikle bağlantı kuruyoruz:

git remote add githubRepo your_repository_url

Bağlantımızın kurulup kurulmadığını test etmek için komut:

git remote

Gelen cevap githubRepo ise bağlantımız hazır demektir. Şimdi projeyi gönderebiliriz. Son komut:

git push -u githubRepo master

Github hesabınıza giriş yapmanız istenirse giriş yaparak kontrol edebilirsiniz. Artık Github üzerinde bir projeniz oldu.

Yukarıdaki kod içinde geçen -u tüm dosyalar, master master dalı demektir.

Diğer Komutlar

Projemizi gönderdik ama şimdi yeni bir komut deneyelim. Aldığım tüm versiyonları listelemek için:

git log

Projemizde yapılan değişiklikleri gösteren bir komut:

git status

Gelen cevaba bakalım:

On branch master
Your branch is up to date with 'githubRepo/master'.

nothing to commit, working tree clean

nothing to commit, working tree clean yani şu demek: hiçbir değişiklik yok, buradaki dizin ile daha önce commit ettiğin dizin aynı

Şimdi index.html dosyamızın içine girip bir değişiklik yapalım ve git status komutunu tekrar yazalım:

$ git status
On branch master
Your branch is up to date with 'githubRepo/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

Yukarıda ki uyarıda modified: index.html cümlesine bakarsak, index.html dosyasında değişiklik olduğunu anlayabiliyoruz. Fakat yine commit edilecek dosya yok diyor.

Peki değişiklik oldu ama de değiştirdik görmek istersek başka bir komut kullanmamız gerekecek:

git diff

Yapılan değişiklikleri görebiliriz:

$ git diff
diff --git a/index.html b/index.html
index d7e1608..8533d92 100644
--- a/index.html
+++ b/index.html
@@ -6,7 +6,7 @@
 <body>

 <h1>İlk Git projem</h1>
-<p>Sabırsızlanıyorum, artık başlayalım.</p>
+<p>İlk projemi commit ettim.</p>

 </body>
 </html>
\ No newline at end of file

Başında (+) işareti olanlar ve yeşil renkli kısım yapılan değişikliği göstermektedir.

Yukarıdaki git diff komutu Working Area ve Stage Area arasındaki tüm değişiklikleri gösterdi fakat sadece stage ile repository arasındaki değişiklikleri görmek istersek. Aşağıdaki komutu kullanmamız gerekecek.

git diff --staged

Working Area da bir dosyada değişiklik yaptıktan sonra eğer Stage Area ya eklemediysek yaptığımız değişiklikleri geri alabiliriz.

git checkout file_name

Stage Area'ya gönderilmiş bir dosyayı tekrar Working Area'ya almak istersek :

git reset HEAD file_name

git add komutunun tersidir.

Dosya adı değiştirme

git mv index.html home.html

Dosya Silmek

Dosya1 ve dosya2 isimli dosyalarımızı silek isteyelim:

git rm dosya1 dosya2

Uzak Sunucudan Kopya Almak

git clone https://github.com/tensorflow/models.git
 

Git clone işlemini hızlandırmak için kullanabileceğiniz bir trick --depth parametresi, bu yöntem "shallow clone" diye geçer. Git clone, tüm proje geçişimini indirir ve büyük projede bu işlem uzun sürer. Fakat depth parametresi ile sadece en güncel versiyonu indirebilirsiniz.

git clone https://github.com/tensorflow/models.git --depth=1

Git Workflow

Git Workflow
Git Workflow

Git Nasıl Çalışır?

Git Nasıl Çalışır?
Git Nasıl Çalışır?

Git Cheat Sheet

Git Cheat Sheet
Git Cheat Sheet
Git Github Gitlab Bitbucket git workflow
0 Beğeni
Bilişim Terimleri Github
Önceki Yazı

React Native Snippet

09 Ocak 2021 tarihinde yayınlandı.
Sonraki Yazı

Can't find variable: state in React Native

09 Ocak 2021 tarihinde yayınlandı.
arrow