Day37
Gitting to know Git (Git'i Ogrenmek)
Özür dilerim, başlıktaki ve içerik boyunca korkunç kelime oyunları için. Git'i bir baba şakasına dönüştüren ilk kişi kesinlikle ben değilim!
Son iki yazıda, sürüm kontrol sistemleri hakkında ve git'in bir sürüm kontrol sistemi olarak temel iş akışlarından bazılarından bahsettik Day 35. Sonra sistemimize git'i yükledik, güncelledik ve yapılandırdık. Ayrıca, Client-Server versiyon kontrol sistemi ile Git arasındaki teoriye biraz daha derinlemesine girdik Gun 36.
Şimdi hepimizin git ile sıkça karşılaşacağı bazı komutları ve kullanım durumlarını öğreneceğiz.
Git'te git yardımı almak için nereye gideriz?
Git ile yapılacak işleri unuttuğunuz veya bilmediğiniz zamanlar olacak. Yardıma ihtiyacınız olacak.
Yardım aramak için ilk başvuracağınız yer, Google veya başka bir arama motoru olacaktır.
İkinci olarak, bir sonraki yer resmi git sitesi ve belgelendirmesi olacaktır. git-scm.com/docs Burada yalnızca tüm mevcut komutlara sağlam bir referans bulmakla kalmayacak, aynı zamanda birçok farklı kaynağa da ulaşacaksınız.
Ayrıca bu belgelere terminalden bağlantınız yoksa oldukça yararlı olan aynı belgelere erişebiliriz. Örneğin, git add
komutunu seçtiğimizde, git add --help
komutunu çalıştırabiliriz ve aşağıda gördüğümüz gibi kılavuzu görürüz.
Ayrıca kabukta git add -h
komutunu kullanarak da bize mevcut seçeneklerin özetini verebiliriz.
Git ile ilgili yanlış inanışlar
"Git'in erişim kontrolü yok" - Bir lideri kaynak kodunu yönetmek için yetkilendirebilirsiniz.
"Git çok ağır" - Git, büyük projelere sahipseniz tarih miktarını azaltan sığ depolar sağlayabilir.
Gerçek Eksiklikler
Binary dosyalar için ideal değil. Kaynak kodu için harika, ancak örneğin yürütülebilir dosyalar veya videolar için uygun değil.
Git kullanıcı dostu değil, aracın komutları ve işlevleri hakkında zaman harcamamız gereken gerçeği muhtemelen bunun önemli bir göstergesidir.
Ancak genel olarak, Git öğrenmesi zor ama kullanması kolaydır.
Git Ekosistemi
Git çevresindeki ekosistemi kısaca ele almak istiyorum, ancak bu alanların derinlemesine inmeyeceğiz, ancak yine de yüksek düzeyde burada belirtmek önemli olduğunu düşünüyorum.
Hemen hemen tüm modern geliştirme araçları Git'i destekler.
- Geliştirici araçları - Zaten Visual Studio Code'u bahsettik, ancak Sublime Text ve diğer metin düzenleyicileri ve IDE'ler için de git eklentileri ve entegrasyonlar bulacaksınız.
- Takım araçları - CI/CD açısından Jenkins gibi araçlar, mesajlaşma çerçevesi olarak Slack ve proje yönetimi ve sorun takibi için Jira gibi araçlar da bahsedildi.
- Bulut Sağlayıcıları - Tüm büyük bulut sağlayıcıları Git'i destekler, Microsoft Azure, Amazon AWS ve Google Cloud Platform.
- Git Tabanlı hizmetler - Ardından GitHub, GitLab ve BitBucket gibi konuları daha sonra daha detaylı ele alacağız. Bu hizmetleri kod için sosyal ağ olarak duymuştum!
Git Cheatsheet(Kısa Notlar)
Çoğu bu komutları henüz ele almadık, ancak çevrimiçi olarak bulunan bazı notlara(cheatsheet) baktıktan sonra bazı git komutlarını ve amaçlarını belgelemek istedim. Hepsini hatırlamamıza gerek yok ve daha fazla pratik ve kullanım ile en azından git temellerini öğreneceksiniz.
Bunları atlassian sitesinden aldım, ancak yazıya dökmek ve açıklamaları okumak, komutların ne olduğunu tanımak ve günlük görevlerde pratiğe geçmek için iyi bir yoldur.
Git Temelleri
Command | Example | Description |
---|---|---|
git init | git init <directory> |
Belirtilen dizinde boş bir git deposu oluşturur. |
git clone | git clone <repo> |
\ |
git config | git config user.name |
Geçerli depo için tüm taahhütlerde kullanılacak yazar adını tanımlar. system , global , local bayrağıyla yapılandırma seçenekleri ayarlanabilir. |
git add | git add <directory> |
\ |
git commit -m | git commit -m "<message>" |
Sahnelenen anlık görüntüyü taahhüt eder, \ |
git status | git status |
Sahnelenen, sahnelenmeyen ve izlenmeyen dosyaları listeler. |
git log | git log |
İndeksiniz ile çalışma dizininiz arasındaki sahnelenmeyen değişiklikleri gösterir. |
git diff | git diff |
İndeksiniz ile çalışma dizininiz arasındaki sahnelenmemiş değişiklikleri gösterir. |
Git Degisiklikleri Geri Alma
Command | Example | Description |
---|---|---|
git revert | git revert <commit> |
\ |
git reset | git reset <file> |
\ |
git clean | git clean -n |
Çalışma dizininden kaldırılacak dosyaları gösterir. Temizlemeyi gerçekleştirmek için -n yerine -f kullanın. |
Git History Yeniden Yazma
Command | Example | Description |
---|---|---|
git commit | git commit --amend |
Son taahhüdü sahnelenen değişiklikler ve son taahhüdün birleştirilmiş haliyle değiştirir. Son taahhüt mesajını düzenlemek için sahnelenmemiş olarak kullanın. |
git rebase | git rebase <base> |
Mevcut dalı \ |
git reflog | git reflog |
Yerel depo başına yapılan değişikliklerin bir günlüğünü gösterir. Tarih bilgisi görmek için --relative-date bayrağını, tüm başvuruları görmek için --all bayrağını ekleyin. |
Git Branches
Command | Example | Description |
---|---|---|
git branch | git branch |
Depodaki tüm dalları listeler. Bir \ |
git checkout | git checkout -b <branch> |
\ |
git merge | git merge <branch> |
\ |
Git Uzak Repoları
Command | Example | Description |
---|---|---|
git remote add | git remote add <name> <url> |
Uzak depo için yeni bir bağlantı oluşturur. Bir uzak depo ekledikten sonra, diğer komutlarda \ |
git fetch | git fetch <remote> <branch> |
Belirtilen depodan belirtilen \ |
git pull | git pull <remote> |
Belirtilen uzaktan mevcut daldaki kopyayı alır ve hemen yerel kopyayla birleştirir. |
git push | git push <remote> <branch> |
Dalları \ |
Git Diff
Command | Example | Description |
---|---|---|
git diff HEAD | git diff HEAD |
Çalışma dizini ile son taahhüt arasındaki farkı gösterir. |
git diff --cached | git diff --cached |
Sahne alanındaki değişiklikler ile son taahhüt arasındaki farkı gösterir. |
Git Config(Yapılandırma)
Command | Example | Description |
---|---|---|
git config --global user.name \ |
git config --global user.name <name> |
Geçerli kullanıcı tarafından yapılan tüm taahhütler için yazar adını tanımlar. |
git config --global user.email \ |
git config --global user.email <email> |
Geçerli kullanıcı tarafından yapılan tüm taahhütler için yazar e-postasını tanımlar. |
git config --global alias \ |
git config --global alias <alias-name> <git-command> |
Bir git komutu için kısayol oluşturur. |
git config --system core.editor \ |
git config --system core.editor <editor> |
Makinedeki tüm kullanıcılar için komutlar tarafından kullanılacak metin düzenleyiciyi tanımlar. \ |
git config --global --edit | git config --global --edit |
Tüm yapılandırmaları manuel olarak düzenlemek için genel yapılandırma dosyasını metin düzenleyicide açar. |
Git Rebase
Command | Example | Description |
---|---|---|
git rebase -i \ |
git rebase -i <base> |
Mevcut dalı interaktif olarak \ |
Git Pull
Command | Example | Description |
---|---|---|
git pull --rebase \ |
git pull --rebase <remote> |
Mevcut dalın uzak kopyasını alır ve yerel kopyasına yeniden tabanlar. Birleştirmek yerine dalları bütünleştirmek için git rebase kullanır. |
Git Reset
Command | Example | Description |
---|---|---|
git reset | git reset |
stage alanını en son sekliyle eşleştirir, ancak çalışma dizinini değiştirmez. |
git reset --hard | git reset --hard |
stage alanını ve çalışma dizinini en son sekliyle eşleştirir, çalışma dizinindeki tüm değişiklikleri geçersiz kılar. |
git reset \ |
git reset <commit> |
Mevcut branchi ucunu geriye taşır, stage alanını eşleştirir, ancak çalışma dizinini değiştirmez. |
git reset --hard \ |
git reset --hard <commit> |
Öncekine benzer, ancak hem sahne alanını hem de çalışma dizinini eşleştirir \ |
Git Push
Command | Example | Description |
---|---|---|
git push \ |
git push <remote> --force |
Eğer sonuçta hızlı ileri birleştirme yapılmayan bir commit oluşursa, git push işlemini zorlar. --force bayrağını kullanmadan önce ne yaptığınızdan emin olun. |
git push \ |
git push <remote> --all |
Tüm local branchleri belirtilen uzak depoya gönderir. |
git push \ |
git push <remote> --tags |
commitler otomatik olarak birleştirme yapılması veya --all flagi kullanıldığında gönderilmez. --tags flagi, tüm local tagleri uzak repoya gönderir. |
Kaynaklar
- What is Version Control?
- Types of Version Control System
- Git Tutorial for Beginners
- Git for Professionals Tutorial
- Git and GitHub for Beginners - Crash Course
- Complete Git and GitHub Tutorial
- Git cheatsheet
Gorusmek Uzere Gun 38