Git
Git nedir?
Git her kaydı commit denen bir noktaya yazar. Commit bütün projenin kopyası değildir, önceki durumdan farktır. Geçmiş bilgisayarında kalır. GitHub ve GitLab bu geçmişi başkasıyla paylaşmak için sitedir. Onlar Git’in kendisi değildir.
Git ne için kullanılır?
Git tek kişi çalışırken de gerekir. Yanlış değişiklikten geri dönmek ve başkasının kodunu elle karıştırmadan almak içindir.
- Kötü commit’ten önceye dönmek
- İki fikri ayrı dalda tutmak
- Sunucuya yalnız hazır kodu göndermek
- Takımın aynı dosyasına dokunmak
Git ile ne yapılabilir?
Git ile klasörü izlersin, değişikliği seçip commit edersin, dal açarsın ve uzak adrese gönderirsin. Eski commit’e bakıp dosyayı o günkü haline döndürmek olur. Git kendi başına siteyi başlatmaz ve kodu denetlemez.
Git öğrenmek zor mu?
İlk üç komut kolaydır: status, add, commit. Zorluk dal, birleştirme ve çakışmada başlar. Aynı satırı iki kişi değiştirince Git doğru sürümü kendi seçmez. Sır, parola ve büyük dosya commit’e girmemelidir.
Avantajları ve sınırları
Avantaj: geçmiş kalır, hata geri alınır, birkaç kişi aynı projede çalışır. Sınır: Git yedekleme hizmeti değildir, sunucudaki sitenin kendisi değildir. Commit mesajı kısa ve düz olmalıdır, yoksa geçmiş okunmaz.
Temel kavramlar
Çalışma klasörü, commit ve uzak adres üç ayrı yerdir. Dal, aynı geçmişten ayrılan çizgidir.
- status neyin değiştiğini gösterir
- add seçilen dosyayı sonraki commit’e koyar
- commit mesajla nokta oluşturur
- push o noktayı uzak adrese gönderir
Kısa örnek
Bu üç komut duruma bakar, dosyaları seçer ve kısa mesajla kaydeder. Mesajı kendi değişikliğine göre yaz.
git status git add . git commit -m "First note"
Çalışan örnekler
Yukarıdaki üç satır her şeyi birden kaydeder. Bu örnekler daha küçük bir iş yapar ve ekranda ne görünmesi gerektiğini söyler. Bunları zaten Git projesi olan bir klasörde çalıştır. git status bunun depo olmadığını söylüyorsa klasör git init ile başlatılmamıştır.
Bütün klasörü değil, bir dosyayı kaydetmek
status neyin değiştiğini ve Git'in henüz izlemediğini listeler. add note.txt sonraki kayıt için yalnız o dosyayı seçer. Diğer değişen dosyalar dışarıda kalır. commit noktayı yazar. Tırnaktaki yazı mesajdır. Ne yaptığını söylemelidir, yalnız update değil. git add . yazarsan klasördeki her değişiklik aynı noktaya girer.
git status git add note.txt git commit -m "Add the note"
Commit'ten sonra git status çalışma alanının temiz olduğunu söyler. note.txt tarihtedir. Eklemediğin ikinci dosya yoktur.
Kaydetmeden önce değişen satırları görmek
diff dosyanın şimdiki hali ile son commit arasındaki farkı gösterir. + ile başlayan satır eklendi. - ile başlayan satır silindi. Bu bir commit değildir. Henüz hiçbir şey kaydolmaz. Hiçbir şey değişmediysen komut hiçbir şey yazmaz. add'den önce bunu oku ki parolayı veya yarım satırı yanlışlıkla kaydetmeyesin.
git diff
Ekran bir karşılaştırmadır, tarihte yeni bir nokta değildir. Terminali kapatmak dosyadaki değişikliği geri almaz.
Geçmişi kısa satırlarda okumak
log commit'leri listeler. --oneline her birini tek satıra koyar. En yeni commit üsttedir. Baştaki kısa söz id'dir. Eski bir noktaya bakmak gerektiğinde o id'yi kullanırsın. Mesaj, commit'te yazdığın yazıdır. Mesajların hepsi update ise liste ne değiştiğini söylemez.
git log --oneline
Her kayıt için bir satır görürsün. Üst satır son commit'tir. Eskiler onun altında durur.
Kendi adımını göndermek ve başkasınınkini almak
push bilgisayarındaki commit'leri bağladığın adrese gönderir, çoğu zaman GitHub'a. pull o adreste olup senin makinede olmayan commit'leri getirir. Aynı komut değildir. push takım arkadaşının yeni işini indirmez. pull seninkini yüklemez. pull durur ve çakışmadan konuşursa aynı satır iki yerde değişmiştir. Git doğru satırı seçmez. Sen seçersin.
git push git pull
Temiz bir push'tan sonra sitede senin son commit'in vardır. Temiz bir pull'dan sonra klasöründe yalnız sitede olan commit'ler vardır.
Sık sorulan sorular
- Git ve GitHub aynı mı? Hayır. Git araçtır. GitHub o geçmişi saklayan sitedir.
- Git yalnız kod için mi? Daha çok metin dosyası içindir. Resim ve video için kötü yoldur.
- Her kayıt commit midir? Hayır. Önce dosyayı seçersin, sonra commit yazarsın.