Unutmayın, çalışma klasörünüzdeki dosyalar iki halden birinde bulunurlar: izlenenler (tracked) ve izlenmeyenler (untracked). İzlenen dosyalar, bir önceki bellek kopyasında bulunan dosyalardır; bunlar değişmemiş, değişmiş ya da hazırlanmış olabilirler. Geri kalan her şey —çalışma klasörünüzde bulunan ve bir önceki bellek kopyasında ya da hazırlama alanında bulumayan dosyalar— izlenmeyen dosyalardır. Bir yazılım havuzunu yeni kopyalamışsanız, bütün dosyalar, henüz yeni seçme yaptığınız ve hiçbir şeyi değiştirmediğiniz için, izlenen ve değişmemiş olacaktır.
Dosyaları düzenlemeye başladığınzıda, Git onları değişmiş olarak görecektir, çünkü son kaydınızdan beri üzerlerinde değişiklik yapmış olacaksınız. Değiştirdiğiniz bu dosyaları önce hazırlayıp sonra bütün hazırlanmış değişiklikleri kaydedeceksiniz ve bu döngü böyle sürüp gidecek. Bu döngü, Figür 2-1'de gösteriliyor.
Hazırlık alanında olduğunu “Changes to be committed” başlığının altında olmasına bakarak söyleyebilirsiniz. Eğer bu noktada bir kayıt (commit) yapacak olursanız, dosyanın git add komutunu çalıştırdığınız andaki hali bellek kopyasına kaydedilecektir. Daha önce git init komutunu çalıştırdıktan sonra projenize dosya eklemek için git add (dosya) komutunu çalıştırdığınızı hatırlayacaksınız —bunun amacı klasörünüzdeki dosyaları izlemeye almaktı. git add komutu bir dosya ya da klasörün konumuyla çalışır; eğer söz konusu olan br klasörse, klasördeki bütün dosyaları tekrarlamalı olarak projeye ekler.
Gelin şimdi halihazırda izlenmekte olan bir dosyayı değiştirelim. İzlenmekte olan benchmarks.rb adındaki bir dosyayı değiştirip status komutunu çaıştırdığınızda şöyle bir ekran çıktısıyla karşılaşırsınız:
Glob örüntüleri shell'ler tarafından kullanılan basitleştirilmiş kurallı ifadelerdir (regular expression). Bir asterisk işareti (*) sıfır ya da daha fazla karakterle eşleşir; [abc] köşeli parantezin içindeki herhangi bir karakterle eşleşir (buradaki örnekte a, b, ya da c ile); soru işareti (?) bir karakterle eşleşir; tireyle ayrılmış karakterleri içine alan bir köşeli parantez ([0-9]) bu aralıktaki bütün karakterlerle eşleşir (bu örnekte 0'dan 9'a kadar olan karakterler).
# bir yorum - bu görmezden gelinir&#x000A;# .a dosyalarını görmezden gel&#x000A;*.a&#x000A;# ama yukarıda .a dosyalarını görmezden geliyor olsan bile lib.a dosyasını izlemeye al&#x000A;!lib.a&#x000A;# kök dizindeki /TODO dosyasını (TODO adındaki alt klasörü değil) görmezden gel&#x000A;/TODO&#x000A;# build/ klasöründeki bütün dosyaları görmezden gel&#x000A;build/&#x000A;# doc/notes.txt dosyasını görmezden gel ama doc/server/arch.txt dosyasını görmezden gelme&#x000A;doc/*.txt&#x000A;
git status komutunu fazla anlaşılmaz buluyorsanız —yalnızca hangi dosyaların değiştiğini değil, bu dosyalarda tam olarak nelerin değiştiğini görmek istiyorsanız— git diff komutunu kullanabilirsiniz. git diff komutunu ileride ayrıntılı olarak inceleyeceğiz; ama bu komutu muhtemelen en çok şu iki soruya cevap bulmak için kullanacaksınız: Değiştirip de henüz kayda hazırlamadığınız neler var? Ve kayda olmak üzere hangi değişikliklerin hazırlığını yaptınız? git status bu soruları genel biçimde cevaplıyor olsa da git diff eklenen ve çıkarılan bütün dosyaları —olduğu gibi yamayı— görsterir.
Kayda hazırlamış olduğunuz değişiklikleri görmek için git diff --cache komutunu kullanabilirsiniz. (1.6.1'den sonraki Git sürümlerinde hatırlaması daha kolay olabilecek git diff --staged komutunu da kullanabilirsiniz.) Bu komut kayda hazırlanmış değişikliklerle son kaydı karşılatırır.
Gördüğünüz gibi hazır kayıt mesajı git status çıktısının # kullanılarak devre dışı bırakılmış haliyle en üstte bir boş satırdan oluşur. Bu devre dışı bırakılmış kayıt mesajını silip yerine kendi kayıt mesajınızı yazabilir, ya da neyi kaydettiğinizi size hatırlatması için orada bırakabilirsiniz. (Neyi değiştirdiğinizin daha ayrıntlı olarak hatırlatılmasını isterseniz, git commit mesajını -v seçeneğiyle kullanabilirsiniz. Bu seçenek kaydetmekte olduğunuz değişikliğin içeriğini de (diff) editörde gösterecektir.) Editörü kapattığınızda Git, yazdığınız mesajı kullanarak değişikliği kaydeder (devre dışı bırakılmış bölümü ve değişikliğin içeriğini mesajın dışında bırakır).
Gördünüğüz gibi, kayıt işlemi yapmadan önce benchmarks.rb dosyasını git add komutundan geçirmek zorunda kalmadınız.
$ git mv eski_dosya yeni_dosya&#x000A;