Tag Archives: stage

Git içerisinde “Stage” Nedir?

Git versiyon kontrol sisteminde “stage” kavramı anlaşılması zor bir kavram olabiliyor bazen, bu videoda bildiğim kadarıyla bu kavramı anlatmaya çalıştım.

Git kesinlikle kendine özgü kelime haznesine sahip olan bir yapı. Bu nedenle birçok kavram tam olarak anlaşılamayabiliyor. “commit” bunlara örnek olarak verilebilir mesela.

Git temelde 3 iş akışına sahip;

1️⃣ Kendi local’inizdeki (bilgisayar, klasör vs.) çalışma dosyaları değiştirirsiniz.

2️⃣ Bir sonraki commit’inizde olmasını istediğiniz dosyaları stage’e atarsınız.

3️⃣ Stage alanınızdaki dosyaları, “commit” yaparak uzaktaki sunucunuza (git directory) gönderebilirsiniz.

✨ Wikipedia’dan güzel bir örnek;

✨ Bir dosyayı stage’lemek, aslında o dosyayı bir sonraki “commit”‘e hazırlamak demektir. Aynı dosyada olsa bile, sadece stage’lediğiniz değişiklikler bir sonraki commint’inizde uzaktaki git sunucusuna gönderilecektir. Örneğin; saat 6 oldu ve işten ayrılmak üzeresiniz ve A ve B adında 2 adet geliştirmeniz var. A geliştirmenizi tamamladınız fakat B geliştirmesi henüz tamamlanamadı. Commit yapıp eve gitmek istiyorsunuz, bu nedenle A geliştirmesine ait kısımları stage’leyip commit edebilirsiniz. B değişiklikleri hala sizin çalışma klasörünüzde olduğu gibi kalacağından, yarın sabah gelip bu geliştirmeye devam edebiliriniz.

Bir başka örnek olarak, aynı dosya üzerinde bile, buna “file.txt” diyelim, yaptığınız ve bir sonraki commit’te olmasını istediğiniz değişiklikleri stage’ledikten sonra, bu dosya üzerinde tekrar çalışmaya devam edebilirsiniz. Bu dosya üzerinde stage’ledikten sonra yaptığınız değişiklikler, bir sonraki commit’inizde bulunmazlar.

Aslında Git içerisinde bu yapı orijinalde “index” veya “cache” olarak anılır, yani bir sonraki commit’te gönderilecek olan dosyaların cache’lenmesi veya index’lemesi gibi düşünebiliriz. Burası çalışılan dizin ile, bir sonraki commit’lenecek düzenleme arasındaki bağlantıyı tutar.

Bence “stage” mantığı, versiyon kontrolüne tam olarak nasıl yaklaşmak istediğimizi daha iyi kontrol etmemize imkan veriyor.

Faydalı linkler:

✨ Git official page: https://git-scm.com/

✨ Git wikipedia: https://en.wikipedia.org/wiki/Git

✨ Git repository on Github: https://github.com/git/git