Git ve Github Ayrıntılı Kullanım Rehberi
- GitHub’da Repository (Depo) Oluşturma: İlk olarak, GitHub hesabınıza gidin ve sağ üst köşede bulunan “New” veya “Yeni” butonuna tıklayarak yeni bir repository oluşturun. Repository adını ve isteğe bağlı açıklamayı ekleyin.
- Git Yükleme: Eğer bilgisayarınızda Git yüklü değilse, Git resmi sitesinden indirip kurun ve bilgisayarınıza yükleyin.
- Komut Satırını Açma: Git Bash (Windows) veya Terminal (Mac/Linux) gibi bir komut istemcisini açın.
Git Global ayarları yapma.
Git yüklendikten sonra, sistemi kullanmaya başlamadan önce kimlik bilgilerini tanımlamak önemlidir. Bu sayede, ilk commit işleminden itibaren yaptığın tüm değişiklikler doğru bir şekilde senin adın ve e-posta adresinle ilişkilendirilir.
Genellikle, Git’i yükledikten sonra ilk adım olarak bu kimlik bilgilerini tanımlaman önerilir:
- Git’i yükle.
- git config –global user.name “Adın Soyadın” ve git config –global user.email “email@example.com” komutlarını çalıştırarak bilgilerini ekle.
1 2 |
git config --global user.name "Adın Soyadın" git config --global user.email "email@example.com" |
1 2 |
// Global olarak dal varsayılan dal ismini ayarlamak. git config --global init.defaultBranch main |
Bu işlemleri bir kez yaptığında, tüm projelerin için geçerli olur. Eğer sadece belirli bir proje için bu bilgileri ayarlamak istersen, bu adımları o projenin dizininde --global
bayrağını kullanmadan gerçekleştirebilirsin.
Git’te, mevcut konfigürasyonda user.name
ve user.email
bilgilerini listelemek için şu komutu kullanabilirsin:
1 |
git config --list |
Bu komut, Git’in mevcut konfigürasyon ayarlarını listeleyecektir. Ancak sadece
user.name
ve user.email
bilgilerini görmek istersen, şu komutları kullanabilirsin:
1 2 |
git config user.name git config user.email |
Yerel Bir Klasör Oluşturma ve İlgili Yapılandırma: İlgili proje dosyalarını içerecek bir klasör oluşturun ve içine gidin.
1 2 |
mkdir proje_klasoru cd proje_klasoru |
1 2 3 4 5 6 |
// Tüm dosyaları izinleri ile birlikte listeler. ls -l // Gizli olan dosya ve klasörleri listeler. ls -a // f1.txt dosyasını nano ile açar. İçerisini düzenledikten sonra :wq ile kaydedip çıkış yapılabilir. nano f1.txt |
Git’i Başlatma: Bu klasörü Git ile izlemeye başlatın.
1 2 3 |
// Bu şekilde bir kurulum yaparsanız dal olarak master seçmiş olursunuz. Eğer bu seçiminizi ilerde değiştirmek ister //seniz ilk commit işleminden sonra "git branch -M main" dal ismini main olarak değiştirebilirsiniz. git init |
1 2 3 |
// Eğer main dalında ilerlemek isterseniz git init'i parametreli kullanabilirsiniz. Default değer olarak dal master //tanımlanmaktadır. git init --initial-branch=main |
Git, varsayılan olarak boş klasörleri takip etmez. Eğer klasörün içinde hiçbir dosya yoksa, git add . komutuyla staging area’ya eklenmez. Bu durumda, klasöre bir dosya (örneğin .gitkeep adında boş bir dosya) ekleyebilirsin:
1 2 |
touch klasor_adi/.gitkeep git add . |
Eğer bir şekilde local depoyu silmek isterseniz aşağıdaki komutu kullanabilirsiniz.
1 |
rm -rf .git/ |
git status komutu, Git ile çalışırken mevcut çalışma dizininin ve staging (aşama) alanının durumunu kontrol etmenizi sağlar. Bu komut, çalışma dizinindeki dosyaların ve staging alanındaki değişikliklerin durumunu gösterir.
1 |
git status |
1 2 |
# Short gösterim git status -s |
Aşama Alanı (Staging Area): Commit işlemine dahil edilmek üzere hazırlanan değişikliklerin geçici olarak toplandığı yer.
Aşama Alanına Dosya Ekleme: Bir dosyayı veya değişikliği aşama alanına eklemek için git add
komutunu kullanırsın. Bu komut, dosyaları staging alanına ekler, böylece bunlar commit işlemine dahil olur.
- Tek Bir Dosyayı Eklemek:
1 |
git add dosya.txt |
Bu komut, dosya.txt
dosyasındaki değişiklikleri staging alanına ekler.
- Birden Fazla Dosyayı Eklemek:
1 |
git add dosya1.txt dosya2.txt |
Aynı anda birden fazla dosyayı staging alanına ekleyebilirsin.
- Tüm Değişiklikleri Eklemek:
1 |
git add . |
Bu komut, tüm değişiklikleri (yeni, değiştirilmiş, silinmiş dosyalar) staging alanına ekler.
Aşama Alanını Temizleme
Staging alanını temizlemek, oraya eklenmiş dosyaları geri alarak onları staging alanından çıkarmak anlamına gelir. Bu işlem, dosyaların staging alanından çıkarılmasını sağlar, ancak dosyaların çalışma dizinindeki durumunu değiştirmez.
Belirli Bir Dosyayı Staging Alanından Çıkarma:
1 |
git reset dosya.txt |
Bu komut, dosya.txt
dosyasını staging alanından çıkarır ve bu dosya commit işlemine dahil edilmez.
- Tüm Dosyaları Staging Alanından Çıkarma:
1 2 |
# "git reset ." kullanılabilir. git reset |
Bu komut, staging alanındaki tüm dosyaları çıkarır.
Aşama Alanının Durumunu Kontrol Etme
Aşama alanında hangi dosyaların olduğunu görmek için git status
komutunu kullanabilirsin.
1 2 |
# git status -s Kısa gösterim tercih edilebilir. git status |
Bu komut, staging alanındaki ve çalışma dizinindeki dosyaların durumunu gösterir. Hangi dosyaların staging alanına eklenmiş olduğunu, hangilerinin henüz eklenmediğini görebilirsin.
Commit Yapın: Değişiklikleri onaylayın ve bir commit (işlem) yapın.
1 |
git commit -m "İlk commit" |
1 2 3 |
# Dal adını <strong>master</strong> dalından, <strong>main</strong> dalına değiştirir. Bu işlem için öncesinde bir commit işleminin olması gerekir. git branch -M main |
Commitleri Görüntüleyin : Commitleri görüntülemek için git log komutu kullanılır. Görüntüleme yöntemleri aşağıdadır.
1. Temel git log Kullanımı
1 |
git log |
Bu komut, commit geçmişini baştan sona listeler. Her commit hakkında aşağıdaki bilgileri gösterir:
- Commit hash’i
- Yazar (Author)
- Tarih
- Commit mesajı
2. Sadece Commit Hash’lerini Görmek
Eğer sadece commit hash’lerini görmek istersen:
1 |
git log --oneline |
•Bu komut, her commit’i tek satırda, kısa bir commit hash’i ve commit mesajı ile gösterir. Örneğin:
1 2 |
abc1234 Initial commit def5678 Added new feature |
3. Sadece Son N Commit’i Görmek
Eğer son birkaç commit’i görmek istersen, sayısını belirleyebilirsin:
1 |
git log -n 5 |
•Bu komut, son 5 commit’i listeler.
4. Belirli Bir Dosyaya Yapılan Commit’leri Görmek
Bir dosya üzerinde yapılan commit’leri görmek için:
1 |
git log <dosya_adi> |
•Örneğin:
1 |
git log README.md |
•Bu komut sadece README.md dosyasında yapılan değişikliklerin olduğu commit’leri gösterir.
5. Commit’leri Grafik Olarak Görmek
Commit geçmişini daha görsel bir şekilde görmek için:
1 |
git log --graph --oneline --all |
•–graph: Commit’ler arasındaki ilişkiyi dallar halinde grafiksel olarak gösterir.
•–oneline: Commit’leri tek satırda ve kısa gösterir.
•–all: Tüm dalları gösterir.
Çıktı şöyle görünebilir:
1 2 3 4 |
* abc1234 (HEAD -> main) Added feature X * def5678 Refactor code | * 789xyz Merge branch 'feature' |/ |
•–since: Belirli bir tarihten itibaren yapılan commit’leri gösterir.
•–until: Belirli bir tarihe kadar yapılan commit’leri gösterir.
7. Yazar Adına Göre Filtreleme
Belirli bir kişinin yaptığı commit’leri görmek için:
1 |
git log --author="yazar_adı" |
•Örneğin:
1 |
git log --author="Jane Doe" |
8. Commit Mesajına Göre Arama
Commit mesajları içinde belirli bir anahtar kelimeyi aramak için:
1 |
git log --grep="anahtar kelime" |
•Bu komut, commit mesajlarında “anahtar kelime” geçen commit’leri gösterir.
9. Değişiklikleri Görmek (Diff ile)
Her commit’te hangi dosya değişikliklerinin yapıldığını görmek için:
1 |
git log -p |
•Bu komut, her commit’teki değişikliklerin (diff) detaylarını gösterir.
•-p yerine –stat kullanarak sadece değişen dosyaların listesini ve ne kadar değişiklik yapıldığını görebilirsin:
1 |
git log --stat |
10. Commit’leri Tersine Sıralamak
Commit’leri ters sırayla (en eski commit’ten en yeni commit’e) görmek için:
1 |
git log --reverse |
11. Sadece Merge Commit’leri Görmek
Eğer sadece “merge” commit’lerini görmek istiyorsan:
1 |
git log --merges |
Özet
git log komutu çok güçlü bir araçtır ve commit geçmişini detaylıca incelemek için birçok farklı seçenek sunar. İşte yaygın kullanılan opsiyonların kısa bir listesi:
- –oneline: Commit’leri tek satırda gösterir.
- –graph: Commit ilişkilerini grafiksel olarak gösterir.
- –author: Belirli bir yazarın commit’lerini gösterir.
- –since / –until: Zaman filtrelemesi yapar.
- –stat / -p: Değişiklik detaylarını gösterir.
Bu seçeneklerle commit geçmişini ihtiyaçlarına göre özelleştirebilirsin.
Son yapılan commit ile ilgili düzenlemeler yapmak :
Örnek Senaryo – Dalları Birleştirme – Git Merge
git merge, Git’te iki dalı birleştirmek için kullanılan bir komuttur. Bu işlem, bir dalda yapılan değişikliklerin diğer bir dala eklenmesini sağlar. Genellikle, bir özelliğin (feature) tamamlanmasından sonra, bu özelliğin ana dala (main/master) eklenmesi için kullanılır. git merge, iki farklı dalı birleştirirken commit geçmişini koruyarak çalışır.
git merge Senaryoları ve Kullanım Alanları
1. Feature Branch’leri Ana Dala Birleştirmek
Bu, en yaygın kullanım senaryosudur. Bir dalda yeni bir özellik geliştiriyorsundur ve bu özellik tamamlandığında, bu değişiklikleri ana dala (main) birleştirmek istersin.
Adımlar:
1.Yeni bir özellik geliştirmek için bir dal oluşturdun:
1 |
git checkout -b feature-login |
2.Bu dalda değişiklikler yaptın ve commit ettin:
1 2 |
git add . git commit -m "Add login feature" |
3.Özelliği bitirdikten sonra ana dala (main) geçersin:
1 |
git checkout main |
4.Değişiklikleri ana dala birleştirirsin:
1 |
git merge feature-login |
5. Eğer çatışma (conflict) yoksa, feature-login dalındaki tüm değişiklikler main dalına eklenir. Eğer çatışma varsa, Git sana bu çatışmaları çözmen gerektiğini söyler.
2. Bir Özelliğin Diğer Bir Özellik Dallarıyla Birleştirilmesi
Projede iki ayrı özellik geliştiriyorsun ve bu özelliklerin birbirleriyle uyumlu çalışıp çalışmadığını görmek istiyorsun. Bu durumda, bir özelliği diğerine birleştirerek test edebilirsin.
Adımlar:
1.İki özellik dalı olduğunu düşünelim: feature-login ve feature-payment.
2.Birinci özelliği diğer özellik dalına birleştirmek için, feature-payment dalına geç:
1 |
git checkout feature-payment |
3. feature-login dalını bu dala birleştir:
1 |
git merge feature-login |
Bu adım, iki dalın birleşmesini sağlar ve birleştirilmiş halde çalışmaları test edebilirsin.
Özetle git merge:
- git merge iki dalı birleştirmek için kullanılır ve bu işlem sırasında dallar arasında değişiklikler eklenir.
- Genellikle özellik dallarını (feature branches) ana projeye dahil etmek için kullanılır.
Örnek Senaryo – Daldan dala commit kopyalama – Git Cherry-pick
git cherry-pick, bir Git komutudur ve bir commit’i bir branch’ten alıp başka bir branch’e eklemenize olanak tanır. Bu, belirli commit’lerin başka bir branch’e aktarılmasına ihtiyaç duyulduğunda kullanışlıdır.
git cherry-pick Ne Yapar?
Genel olarak, bir branch’teki belirli commit’i seçip (cherry-pick) o commit’i başka bir branch’e uygular. Özellikle başka branch’lerde bulunan ve yararlı olan küçük değişiklikleri ya da hata düzeltmelerini mevcut branch’inize almanız gerektiğinde kullanılır.
Kullanım Senaryosu
Diyelim ki bir proje üzerinde iki farklı branch’te çalışıyorsunuz: feature-branch ve main. feature-branch üzerinde bir hata düzeltmesi yaptınız, ancak bu hata düzeltmesini hemen main branch’ine de aktarmanız gerekiyor, ancak diğer tüm değişiklikleri değil, sadece bu küçük düzeltmeyi.
Adımlar:
1. Önce feature-branch üzerinde bir commit yaptığınızı varsayalım:
1 2 |
git checkout feature-branch git commit -m "Küçük hata düzeltmesi" |
1 2 |
git checkout feature-branch git commit -m "Küçük hata düzeltmesi" |
Ne Zaman Kullanılır?
•Hızlı bir hata düzeltmesini mevcut branch’e aktarmanız gerektiğinde.
•Başka bir branch’teki belirli bir özelliği, diğer tüm değişiklikleri almadan mevcut branch’e eklemek istediğinizde.
•Bir geliştirme süreci sırasında belirli bir commit’i başka bir feature branch’e uygulamak istediğinizde.
Bu sayede, branch’ler arası tam merge yapmadan sadece ihtiyaç duyduğunuz değişiklikleri aktarabilirsiniz.
Örnek Senaryo – Remote Repository – Git Remote
1 |
git remote add origin <repository_url> |
Burada <repository_url>
kısmına GitHub’da oluşturduğunuz repository’nin URL’sini eklemeniz gerekiyor. Ayrıca, main
yerine kullandığınız ana dal ismini kullanmalısınız; GitHub’da varsayılan olarak genellikle main
veya master
olarak adlandırılır.
Değişiklikleri Yükleyin: Yerelde yaptığınız değişiklikleri GitHub’a yükleyin.
1 |
git push -u origin main |
Eğer Githubda repo oluştururken uzakta bir README.md dosyası oluşturursanız direkt yukardaki komutu kullandığınızda hata alabilirsiniz.
İlk senaryoda, GitHub’da yeni bir repo oluştururken “Add a README.md” seçeneğini seçtiğinde, GitHub senin için bir README.md dosyası oluşturur ve ilk commit’i gerçekleştirir. Bu yüzden, sen de aynı repo’ya yerel bilgisayarından push etmek istediğinde, iki farklı commit geçmişi oluşmuş olur:
•Yerel bilgisayarındaki commitler: Kendi bilgisayarındaki repository’yi ilk defa push ediyorsun.
•GitHub’daki commit: GitHub senin yerelindeki repository’den önce bir commit yapmış oluyor (README.md dosyasını ekleyerek).
Bu iki commit geçmişi uyuşmadığından dolayı push işlemi başarısız olur. Git, yereldeki ve GitHub’daki commit’lerin aynı olmasını ister.
Çözüm:
•git pull origin main komutunu kullanarak GitHub’daki değişiklikleri (README.md’yi) yerel repository’ne çekmen (pull) gerekir.
•Ardından git push origin main komutuyla push işlemini tekrarlayabilirsin.
Evet, tabii ki! git push -u origin main
komutu, yerelde yaptığınız commitleri uzaktaki bir depoya (genellikle GitHub gibi) göndermek için kullanılır. Bu komutun detayları şu şekildedir:
git push
: Yereldeki değişiklikleri uzak bir depoya göndermek için kullanılan temel git komutudur.-u origin main
: Bu bölümde kullanılan bayraklar ve ifadeler şunlardır:-u
: “upstream” anlamına gelir. Bu, yereldeki branch’i uzaktaki bir branch ile eşleştirmek için kullanılır. Ayrıca, bir sonrakigit push
komutlarında sadecegit push
şeklinde kullanmanıza olanak tanır.origin
: Uzaktaki depoya atıfta bulunulan bir kısaltmadır. Genellikle, projenin orijinal halini saklayan uzak depoya atıfta bulunmak için “origin” kullanılır. Bu ismi projeyi klonlarken varsayılan olarak alırsınız.main
: Yereldeki branch’in adıdır. Eğer kullandığınız Git sürümü 2.28 ve üzeriyse, “main” adı genellikle varsayılan ana dal adıdır. Daha eski sürümlerde ise “master” adı daha yaygındır.
Bu komut, yereldeki değişiklikleri “main” adlı yerel dalınızı takip eden uzak depodaki “main” dala gönderir. İlk kez git push -u origin main
komutunu kullanıyorsanız, Git sizden kullanıcı adı ve şifrenizi girmenizi isteyebilir.
Yeni bir dosya ekleme işleminden sonra ne yapmalıyım. ?
Yeni bir dosya ekledikten sonra, bu dosyayı Git’e ekleyerek ve bir commit yaparak değişiklikleri kaydetmeniz gerekiyor. Ardından, bu değişiklikleri uzak depoya (örneğin, GitHub’a) göndermek için git push
komutunu kullanabilirsiniz. İşte adım adım yapmanız gerekenler:
- Yeni Dosyayı Ekleyin: Önce, yeni oluşturduğunuz dosyayı Git’e ekleyin. Eğer sadece bu yeni dosyayı ekleyecekseniz:
1 |
git add yeni_dosya.txt |
Eğer tüm dosyaları eklemek istiyorsanız:
1 |
git add . |
- Commit Yapın: Eklediğiniz dosyayı bir commit yaparak kaydedin. Commit mesajınız, yaptığınız değişikliği açıklamalıdır:
1 |
git commit -m "Yeni dosya ekledim" |
- GitHub Repo’ya Push Edin: Yaptığınız commit’i uzak depoya göndermek için:
1 |
git push |
Eğer daha önce -u origin main
ile branch’i uzak depoya takip ettiyseniz, sonraki push’larınızda sadece git push
komutunu kullanabilirsiniz.
Eğer mevcut bir Git depo klasörünüzdeki tüm geçmişi ve değişiklikleri temizlemek istiyorsanız, aşağıdaki adımları takip edebilirsiniz:
Mevcut Değişiklikleri İptal Etme: Eğer mevcut çalışma dizinizde değişiklikler varsa, bunları iptal edin.
1 |
git reset --hard |
Bu komut, mevcut branch’teki son commit’e geri döner ve tüm değişiklikleri iptal eder.
Mevcut Geçmişi Temizleme:
1 |
git clean -fdX |
Uzaktaki Bağlantıyı Kaldırma (Opsiyonel):
1 |
git remote remove origin |
Bu komut, uzak depo bağlantısını kaldırır.
Uzaktaki Dalları Listeleme :
1 |
git branch -r |
Bu çıktıda, origin uzak deposundaki dallar listelenir. Bu dallar, yerel bilgisayarınızda değil, uzak depoda mevcut olan dallardır.
Git ile İlgili Dosyaları Silme:
Klasörün içindeki tüm Git ile ilişkili dosyaları silebilirsiniz. Aşağıdaki komutlarla bu işlemi gerçekleştirebilirsiniz:
1 |
rm -rf .git/ |
Eğer uzaktaki sunucudaki bir değişikliği locale çekmek istersek:
1 |
git pull origin main |
- Kaynak: Bilgi desteği için ChatGPT, OpenAI tarafından sağlanan yapay zeka tabanlı asistan.
İlk Yorumu Siz Yapın