Bu makalemizde Git Server yapısını ve mantığını analayabilmeniz açısından git iş akışının nasıl olduğunu açıklamaya çalışacağım. Bilindiği gibi Git Server diğer versiyon yönetim sistemlerinden farklı olarak three-tree yapısına sahiptir. İş akışını da bu yapı belirler. (Git Server Three-tree yapısı makalesine göz atabilirsiniz) Bu yapının temel taşı working copy ve repository arasında staging index olarak adlandırılan geçici hafıza görevi gören bir katmanın eklenmesidir. Bu yapı extra kontrol dışında aynı zamanda yaptığımız değişiklikleri commit ederken bir anlamda onay mekanizması da sağlar. Git iş akışını anlayabilmek için bir projede yaptığımız örnek bir değişiklik üzerinde nasıl tepki verdiğini inceleyeceğiz ve örnek üzerinden iş akışı anlatılacaktır.
Konunun anlaşılması açısından eklediğim resim yaptığımız işlemeleri görselleştirmek açısından anlamlı olacağı için sizinle paylaşıyorum. Bu resim doğrultusunda git bash'de çalışarak örnek bir projeye değişikliklerin nasıl eklendiğini anlatacağım.
Bu işlemleri anlamak açısından ilk önce proje için git status komutunu çalıştıralım . Aşağıdaki gibi bir sonuç göreceksiniz.
$ git status
On branch master
Initial commit
Untracked files:
(use "git add ..." to include in what will be committed)
file.txt
nothing added to commit but untracked files present (use "git add" to track)
Görüldüğü gibi şuanda değişiklikler üzerinde işlem yapmadık. Bu değişiklikleri git add file.txt komutu ile staging index alanına ekliyoruz. Bu komutu çalıştırdıktan sonra tekrar git status komutunu kullanalım. Bize aşağıdaki gibi bir sonuç verecektir.
Agha@AghaAlizade MINGW64 /c/GitWorkFlow (master)
$ git add file.txt
Agha@AghaAlizade MINGW64 /c/GitWorkFlow (master)
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: file.txt
Görüldüğü gibi şuanda staging index alanında file.txt dosyası mevcut. Bunu repository'ye eklemek içinse git commit komutunu kullanabiliriz. Commit ettikten sonra tekrar git status komutunu çalıştırırsak aşağıdaki gibi bir ekran çıktısı ile karşılaşacağız.
$ git commit -m "file.txt dosyasının commit edilmesi"
[master (root-commit) 2150b2a] file.txt dosyasının commit edilmesi
Committer: Agha Alizade
Your name and email address were configured automatically based
on your username and hostname. Please check that they are accurate.
You can suppress this message by setting them explicitly. Run the
following command and follow the instructions in your editor to edit
your configuration file:
git config --global --edit
After doing this, you may fix the identity used for this commit with:
git commit --amend --reset-author
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 file.txt
Agha@AghaAlizade MINGW64 /c/GitWorkFlow (master)
$ git status
On branch master
nothing to commit, working directory clean
Yukarıda git add komutunu çalıştırırken git server bize
use "git rm --cached ..." to unstage diye bir mesaj da göstermişti. Bu mesajın anlamı ise yaptığınız değişiklikleri staging index alanına göndermeden direk repository'e eklememizi sağlayan komuttur. Git Server iş akışında esneklik sağlar ve yaptığınız değişiklikleri direk olarak repository alanına eklemenize izin verir. Ama bu iş akışının three-tree yapısını şeklinde tasarlanmasının doğasında yatan nedenlerin en başında kontrol gelir ve bu işlemi yaparken bir daha düşünmenize yardımcı olur. Çok kısa sürenizi alacak bu işlemi siz de normal git akışında önerildiği ve yukarıda anlatıldığı gibi yapmanızı öneririm.
Yukarıdaki resim ise file.txt dosyasında değişiklik yaptıktan sonra tekrar bunu repository alanına eklerken olacak iş akışını görselleştirmektedir. Anlattıklarım doğrultusunda bu iş akışını da sizin çıkaracağınızı düşünereke makaleyi daha fazla uzatmak istemiyorum. Çünkü burada da aynı işlemler yapılıyor.
Konu ile alakalı sorularınız varsa lütfen sormaktan çekinmeyin. En kısa sürede yanıtlamaya çalışacağım.
Yorumlar
Yorum Gönder