Claude Code'da Checkpoint ve /rewind: Kod ve Konuşmayı Geri Alma Rehberi
Claude Code'la çalışırken en can sıkıcı an, aracın verdiğiniz görevi yanlış yönde ilerletmesi ya da denediğiniz bir yaklaşımın işe yaramadığını fark etmenizdir. İşte tam bu anlar için Claude Code, her isteğinizden önce çalışma dizininizin bir checkpoint'ini otomatik olarak alır; /rewind komutuyla (ya da boş bir prompt kutusunda Esc'e iki kez basarak) hem kodu hem konuşmayı, ya da yalnızca birini, önceki bir noktaya geri döndürebilirsiniz. Bu yazıda checkpoint sisteminin nasıl çalıştığını, /rewind menüsündeki tüm seçenekleri, neyi izleyip neyi izlemediğini, oturum dallandırma (/branch) ile ilişkisini ve pratik bir kurtarma senaryosunu tamamen resmi Claude Code dokümantasyonuna (code.claude.com/docs) dayanarak anlatıyorum. Etkili istem yazma ve yön düzeltme konusunda daha geniş bir bakış için prompt engineering rehberime de göz atabilirsiniz.
Checkpoint Nedir, Nasıl Çalışır?
Claude Code, siz her prompt gönderdiğinizde kodunuzun o anki durumunu otomatik olarak yakalar. Bu, elle bir şey yapmanızı gerektirmeyen, tamamen arka planda işleyen bir mekanizmadır: bir görev isteyip Claude çalışmaya başladığı andan itibaren, işler ters giderse geri dönebileceğiniz bir nokta zaten oluşmuş olur. Checkpoint sistemi Claude'un kendi dosya düzenleme araçlarıyla (dosya oluşturma, düzenleme, silme) yaptığı tüm değişiklikleri izler.
Otomatik İzleme Kuralları
- Her kullanıcı promptu yeni bir checkpoint oluşturur. Yani konuşmadaki her mesajınız, o ana kadarki durumu işaretleyen bir geri dönüş noktasıdır.
- Claude Code, bir oturumdaki en son 100 checkpoint'in dosya anlık görüntüsünü tutar. Daha eski bir checkpoint atıldığında, artık kalan hiçbir checkpoint tarafından referans edilmeyen anlık görüntü dosyaları da silinir — istisna, her dosyanın ilk anlık görüntüsüdür; bu dosya asla silinmez.
- Checkpoint'ler konuşmayla birlikte kaydedilir. Bir oturumu kapatıp sonra
/resumeile devam ettirseniz bile,/rewindyine çalışır. - Checkpoint'ler oturumla birlikte varsayılan olarak 30 gün sonra silinir. Bu süreyi
settings.jsoniçindekicleanupPeriodDaysayarıyla değiştirebilirsiniz (aşağıda ayrıntılı anlatıyorum).
VS Code Uzantısında Checkpoint Tabanı
Her dosyanın ilk anlık görüntüsünün silinmeden saklanmasının nedeni, bu dosyanın VS Code eklentisinin oturum içi diff görünümü için taban (baseline) olarak kullanılmasıdır. VS Code içinde Claude Code panelini açtığınızda gördüğünüz "bu dosya oturum başından bu yana neyi değiştirdi" diff'i, işte bu ilk anlık görüntüyle mevcut dosya arasındaki farktır — checkpoint sayısı 100'ü aştığında ara anlık görüntüler temizlense bile bu taban korunduğu için diff görünümü bozulmaz.
/rewind Menüsünü Açmak
Rewind menüsünü açmanın iki yolu var: /rewind yazıp Enter'a basmak, ya da prompt kutusu boşken Esc tuşuna arka arkaya iki kez basmak:
/rewind
Prompt kutusunda yazılı bir metin varsa çift Esc menüyü açmaz — sadece o metni temizler. Temizlenen metin girdi geçmişinize kaydedildiğinden, rewind menüsünden çıktıktan sonra Yukarı ok tuşuyla geri getirebilirsiniz.
Menü açıldığında, o oturumda gönderdiğiniz her prompt bir liste olarak görünür. Geri dönmek istediğiniz noktayı seçtiğinizde Claude Code size bir eylem menüsü sunar.
Rewind Menüsündeki Seçenekler
Seçtiğiniz noktaya göre şu eylemlerden birini uygulayabilirsiniz:
| Seçenek | Ne yapar |
|---|---|
| Restore code and conversation | Hem kodu hem konuşmayı seçilen noktaya geri döndürür. |
| Restore conversation | Mevcut kodu koruyarak yalnızca konuşmayı o mesaja geri sarar. |
| Restore code | Konuşmayı koruyarak yalnızca dosya değişikliklerini geri alır. |
| Summarize from here | Bu noktadan itibaren olan konuşmayı bir özete sıkıştırır, bağlam penceresinde yer açar. |
| Summarize up to here | Bu noktadan öncesini özetler, sonraki mesajları olduğu gibi bırakır. |
| Never mind | Hiçbir şey değiştirmeden mesaj listesine geri döner. |
İki kod geri yükleme seçeneği (Restore code ve Restore code and conversation) yalnızca seçtiğiniz checkpoint'in geri alınacak izlenmiş dosya değişiklikleri varsa görünür. O noktadan sonra hiç dosya düzenlemesi yakalanmadıysa menü size sadece Restore conversation, iki özetleme seçeneği ve Never mind sunar.
Konuşmayı geri yüklediğinizde ya da Summarize from here'i seçtiğinizde, seçtiğiniz mesajdaki orijinal prompt girdi kutusuna geri konur; böylece onu tekrar gönderebilir ya da düzenleyebilirsiniz. Summarize up to here'i seçtiğinizde ise konuşmanın sonunda, girdi kutusu boş halde kalırsınız. Her iki özetleme seçeneğinde de, sıkıştırılan mesajların yerinde bir Summarized conversation işareti belirir.
Özeti Yönlendirmek
Özetleme dosyalardaki hiçbir şeyi değiştirmez ve orijinal mesajlar oturum transkriptinde kalmaya devam eder — yani Claude, gerekirse detaylara yine başvurabilir. Özetin neye odaklanacağını yönlendirmek için, ok tuşlarıyla bir Summarize seçeneğini vurgulayıp satırda add context (optional) yazan yere talimat yazabilir, ardından Enter'a basabilirsiniz. Seçeneği doğrudan numara tuşuyla seçerseniz talimatsız, anında özetleme yapılır.
Özetleme, aynı oturumda kalıp bağlamı sıkıştırması bakımından hedefli bir /compact'e benzer. Orijinal oturumu bozmadan farklı bir yaklaşım denemek isterseniz, bunun yerine /branch ya da claude --continue --fork-session kullanmanız gerekir — bu ikisini aşağıda ayrıca ele alıyorum.
/clear Sonrası Geri Sarma
Aynı Claude Code sürecinde daha önce /clear çalıştırdıysanız, rewind menüsü listenin en üstünde /resume <session-id> (previous session) etiketli ek bir satır gösterir. Bunu seçmek, /clear çalışmadan önce aktif olan konuşmaya geri döner. Bu satır, Claude Code'dan çıkana ya da başka bir oturumu resume edene kadar kullanılabilir kalır ve Claude Code v2.1.191 ya da üzeri gerektirir. Daha eski sürümlerde bunun yerine /resume çalıştırıp listeden önceki oturumu seçmeniz gerekir.
Ne Zaman Kullanılır?
Resmi dokümantasyona göre checkpoint'ler özellikle şu durumlarda işe yarar:
- Alternatifleri keşfetmek: başlangıç noktanızı kaybetmeden farklı uygulama yaklaşımlarını deneyin.
- Hatalardan kurtulmak: hata ekleyen veya işlevselliği bozan değişiklikleri hızla geri alın.
- Özellik üzerinde yinelemek: çalışan durumlara geri dönebileceğinizi bilerek varyasyonlar deneyin.
- Bağlam alanı açmak: uzun ve dağınık bir hata ayıklama oturumunu, başlangıç talimatlarınızı koruyarak ortadan itibaren özetleyin.
Sınırlamalar
Checkpoint sistemi çok kullanışlı olsa da neyi izleyip neyi izlemediğini bilmek önemli — aksi halde "geri aldım" sanıp aslında hâlâ eski (bozuk) bir durumda kalabilirsiniz.
Bash Komutuyla Yapılan Değişiklikler İzlenmez
Checkpoint sistemi, bash komutlarıyla değiştirilen dosyaları izlemez. Örneğin Claude Code şu komutları çalıştırırsa:
rm file.txt
mv old.txt new.txt
cp source.txt dest.txt
Bu dosya değişiklikleri /rewind ile geri alınamaz. Yalnızca Claude'un kendi dosya düzenleme araçlarıyla yapılan doğrudan düzenlemeler izlenir.
Subagent Düzenlemeleri Geri Yüklenmez
Bir subagent Claude'un dosya düzenleme araçlarıyla değişiklik yapar, ama Claude Code bu değişiklikleri genelde oturumunuzun checkpoint'lerine yakalamaz. Rewind'in bu değişiklikleri geri yükleyip yükleyemeyeceği, subagent'ın nasıl çalıştığına bağlıdır:
- Ön planda çalışan forklanmış skill:
context: forkiçeren bir skill'in çalışma ağacınızı kendi turunuz sırasında doğrudan düzenlemesi durumunda, rewind bu değişiklikleri de her zamanki gibi geri yükler. Bir fork'u ön planda çalıştırmak içinbackground: falseayarlayın; bazı durumlarda bu ayardan bağımsız olarak fork zaten ön planda çalışır. - Diğer tüm subagent türleri: rewind değişiklikleri geri yüklemez. Bunları geri almak için git kullanmanız gerekir. Buna varsayılan olarak arka planda çalışan bir forklanmış skill ile arka planda çalışan bir
/code-review --fixkoşusu da dahildir.
Oturum Dışı Değişiklikler İzlenmez
Checkpoint sistemi yalnızca mevcut oturum içinde düzenlenmiş dosyaları izler. Claude Code dışında elle yaptığınız değişiklikler ve eşzamanlı başka oturumlardan gelen düzenlemeler, aynı dosyaları değiştirmedikçe genelde yakalanmaz.
Symlink ve Hard Link Yolları Geri Yüklenmez
Checkpoint sistemi sembolik bağlantılı (symlink) veya sabit bağlantılı (hard link) dosyaları geri saramaz. Rewind menüsünden Restore code ya da Restore code and conversation'ı seçtiğinizde, Claude Code izlenen symlink veya hard link yollarını atlar ve bir Restored the code, but skipped N files uyarısı gösterir; atlanan dosyalar mevcut içeriklerini korur. Bir dotfile yöneticisinin projenize symlink'lediği yapılandırma dosyaları ile pnpm'in hard-link'lediği dosyalar bu kategoriye girer. Bir geri yüklemenin hangi yolları atladığını görmek için, geri yüklemeden önce /debug ile hata ayıklama günlüğünü açın: ~/.claude/debug/<session-id>.txt altındaki günlük, atlanan her yolu adıyla listeler.
Checkpoint, Git'in Yerini Tutmaz
Checkpoint'ler hızlı, oturum düzeyinde bir kurtarma mekanizması olarak tasarlanmıştır. Kalıcı sürüm geçmişi ve iş birliği için hâlâ git'i kullanmaya devam etmelisiniz — özellikle bash komutlarının, subagent'ların veya birden çok eşzamanlı oturumun yaptığı değişiklikler söz konusu olduğunda checkpoint tek başına yeterli bir güvenlik ağı değildir.
cleanupPeriodDays Ayarı
Checkpoint'ler ve diğer uygulama verileri, varsayılan olarak 30 gün sonra otomatik temizlenir. Bu süreyi değiştirmek için settings.json içine cleanupPeriodDays ekleyin (minimum değer 1'dir):
{
"cleanupPeriodDays": 20
}
Claude Code bu temizliği başlangıçta, saklama süresini güvenle belirleyebildiği sürece uygular. Transkript yazımını tamamen kapatmak isterseniz bunun için ayrı bir yapılandırma (düz metin depolama ayarları) gerekir; sadece checkpoint saklama süresini uzatmak istiyorsanız cleanupPeriodDays yeterlidir.
/rewind, /branch, /compact, /clear: Hangisini Ne Zaman Kullanmalı?
Claude Code'da bağlamı ve geçmişi yönetmenin birkaç farklı yolu var; her biri farklı bir amaca hizmet eder:
| Komut | Ne yapar | Ne zaman kullanılır |
|---|---|---|
/rewind |
Aynı oturumda kodu ve/veya konuşmayı önceki bir checkpoint'e geri döndürür. | Bir hatayı hemen geri almak, yanlış giden bir yolu terk etmek. |
/branch |
Konuşmanın bir kopyasını çıkarıp sizi o kopyaya geçirir; orijinal oturum değişmeden kalır. | Aynı başlangıç noktasından iki farklı yaklaşımı paralel denemek. |
/compact [talimat] |
Tüm geçmişi bir özetle değiştirir; dosyalarda hiçbir şeyi geri almaz. | Kod değişikliklerini korurken bağlam penceresinde yer açmak. |
/clear |
Bağlamı tamamen boşaltıp yeni bir konuşma başlatır; önceki konuşma diskte saklanır. | Tamamen ilgisiz, yeni bir göreve başlamak. |
Rewind menüsündeki Summarize from here / Summarize up to here seçenekleri de, aslında hedefli bir /compact'in rewind menüsü içinden çalıştırılmış hâlidir — aradaki fark, nereden itibaren özetleneceğini konuşmadaki belirli bir noktaya göre seçebilmenizdir.
Oturum Dallandırma: /branch ve --fork-session
Dallandırma (branching), o ana kadarki konuşmanın bir kopyasını çıkarır ve sizi o kopyaya geçirir; orijinal konuşma bozulmadan kalır. Farklı bir yaklaşımı, izlediğiniz yolu kaybetmeden denemek istediğinizde kullanılır. Oturum içinden, isteğe bağlı bir isimle çalıştırılır:
/branch try-streaming-approach
İsim vermezseniz Claude Code yeni dalı, konuşmadaki ilk promptun adını vererek isimlendirir. Komut satırından ise --continue veya --resume'u --fork-session ile birleştirebilirsiniz:
claude --continue --fork-session
/branch onay mesajı iki oturum kimliği gösterir: içine geçtiğiniz yeni dal ve orijinal oturum. Orijinal oturum diskte değişmeden kalır ve session picker'da görünmeye devam eder; /resume <orijinal-isim> ile ya da kimliğini /resume'a vererek geri dönebilirsiniz.
/branch, transkripti kopyalayıp çalışan Claude Code sürecini bu yeni transkribe yazacak şekilde değiştirir. Bu ayrım, dalın nelerin devraldığını belirler:
| Durum | /branch sonrası |
|---|---|
| Konuşma geçmişi | /branch çalıştırdığınız ana kadar dala kopyalanır. |
| "Bu oturum için izin ver" onayları | Devam eder; dal aynı süreçte çalıştığından mevcut onaylarınız geçerli kalır. --fork-session ile ayrı bir sürece dallanırsanız yeni süreç bu onaylar olmadan başlar, yeniden onaylamanız gerekir. |
| Çalışan arka plan subagent'ları ve arka plan bash komutları | Çalışmaya devam eder; çıktıları orijinal oturumda değil, geçtiğiniz yeni dalda görünür. |
| Remote Control bağlantısı | Bağlı kalır; telefonunuz ya da tarayıcınız sizi dala kadar takip eder ve yeni mesajları orada almaya devam eder. |
Aynı oturumu forklamadan iki terminalde resume ederseniz, her iki terminaldeki mesajlar tek bir transkriptte iç içe geçer. Tek bir oturum içinde checkpoint tabanlı geri sarma için /rewind'i kullanmaya devam edin; farklı yaklaşımları paralel denemek için /branch'i tercih edin.
Pratik Senaryo: Denenen Bir Refactor'ü Geri Almak
Bir UserService sınıfındaki tekrar eden veritabanı sorgularını tek bir metotta toplamasını istediğinizi düşünün. Claude birkaç dosyada değişiklik yapıyor, ama sonuçta ortaya çıkan yapı beklediğinizden daha karmaşık — belki de yanlış bir soyutlama seçmiş. Elle her dosyayı tek tek eski hâline getirmek yerine:
/rewind
Menüden, refactor isteğini gönderdiğiniz mesajı seçin ve Restore code and conversation'ı işaretleyin. Claude Code, o istekten sonra değiştirilen tüm dosyaları isteği göndermeden önceki hâline döndürür; konuşma da aynı noktaya sarılır, orijinal prompt girdi kutusuna geri konur. Böylece ya isteği daha net bir şekilde yeniden yazabilir ("tekrar eden sorguları yeni bir UserQueryBuilder sınıfına taşı, mevcut metot imzalarını değiştirme" gibi) ya da tamamen farklı bir yol deneyebilirsiniz. Eğer konuşmanın geri kalanını (ör. sonraki hata ayıklama adımlarını) kaybetmeden sadece dosyaları eski hâline döndürmek isteseydiniz, bunun yerine Restore code'u seçerdiniz. İki farklı refactor stratejisini birbirini bozmadan karşılaştırmak isteseydiniz ise /branch alternative-refactor ile ayrı bir dala geçip orada denerdiniz.
Pratik Senaryo 2: Uzun Bir Hata Ayıklama Oturumunda Bağlam Açmak
Bir üretim hatasını araştırmak için Claude'a logları okutup, olası nedenleri tek tek elemesini istediğinizi düşünün. Yirmi otuz mesaj sonra kök nedeni buluyorsunuz, ama o noktaya kadarki tüm "bu ihtimal değilmiş" denemeleri konuşmanın büyük bölümünü dolduruyor ve bağlam penceresi doluyor. Kök nedeni bulduktan sonra düzeltmeyi yazdırmaya devam etmek istiyorsunuz, ama artık her yeni istek daha pahalı hâle geliyor. Bu noktada /rewind'i açıp kök nedeni bulduğunuz mesajı seçebilir, Summarize from here'i işaretleyip add context alanına "sadece kök neden ve önerilen düzeltmeyi özetle, denenen yanlış ihtimalleri atla" gibi bir talimat yazabilirsiniz. Sonuç: dosyalarda hiçbir şey değişmez, ama konuşma geçmişi tek bir Summarized conversation girdisine sıkışır ve sonraki isteklerinizin taşıdığı bağlam önemli ölçüde küçülür — başlangıçtaki asıl talimatınız ve son birkaç mesaj yine de korunur.
Sık Karşılaşılan Sorunlar
| Belirti | Olası neden ve çözüm |
|---|---|
| Rewind menüsünde kod geri yükleme seçenekleri yok | Seçtiğiniz checkpoint'ten sonra hiç izlenmiş dosya değişikliği yapılmamış olabilir; menü bu durumda yalnızca konuşma ve özetleme seçeneklerini gösterir. |
| Beklediğim değişiklik geri alınmadı | Değişiklik bir bash komutuyla (rm/mv/cp), bir subagent tarafından ya da Claude Code dışında elle yapılmış olabilir — bunların hiçbiri checkpoint tarafından izlenmez, git ile geri almanız gerekir. |
| "Restored the code, but skipped N files" uyarısı | Atlanan dosyalar symlink ya da hard link'tir. Geri yüklemeden önce /debug açıp ~/.claude/debug/<session-id>.txt günlüğünden hangi yolların atlandığını görebilir, o dosyaları elle ya da git ile geri alabilirsiniz. |
| Çift Esc menüyü açmadı | Prompt kutusunda yazılı metin vardı; çift Esc önce metni temizler. Menüyü açmak için kutu boşken tekrar iki kez Esc'e basın. |
/clear öncesi konuşmaya rewind'den ulaşamıyorum |
Claude Code v2.1.191'den eskiyse bu satır menüde görünmez; bunun yerine /resume çalıştırıp listeden önceki oturumu seçin. Ayrıca bu satır yalnızca aynı süreçte kalındığı sürece kullanılabilir; çıkış yapıp yeniden başlattıysanız görünmez. |
| Checkpoint'ler beklenenden erken siliniyor | Varsayılan saklama süresi 30 gündür; settings.json'da cleanupPeriodDays'i artırarak süreyi uzatabilirsiniz. |
Sıkça Sorulan Sorular
/rewind menüsünü nasıl açarım?
/rewind yazıp Enter'a basabilir ya da prompt kutusu boşken Esc tuşuna iki kez basabilirsiniz. Kutuda yazılmış bir metin varsa çift Esc menüyü açmaz, sadece metni temizler; temizlenen metin girdi geçmişinize kaydedilir, rewind menüsünden çıktıktan sonra Yukarı ok ile geri getirebilirsiniz.
Kaç checkpoint saklanır ve ne kadar süre tutulur?
Claude Code bir oturumdaki en son 100 checkpoint'in dosya anlık görüntüsünü tutar; bu sayının ötesindeki en eski checkpoint'ler, artık hiçbir checkpoint tarafından referans edilmeyen anlık görüntülerle birlikte silinir. Checkpoint'ler konuşmayla birlikte kaydedilir ve oturumla birlikte varsayılan olarak 30 gün sonra temizlenir; bu süre settings.json içindeki cleanupPeriodDays ile değiştirilebilir.
Bash komutuyla silinen veya taşınan dosyaları rewind geri getirir mi?
Hayır. Checkpoint sistemi yalnızca Claude'un kendi dosya düzenleme araçlarıyla yaptığı değişiklikleri izler. rm, mv veya cp gibi bash komutlarıyla yapılan dosya değişiklikleri rewind ile geri alınamaz; bu tür işlemler için git'e güvenmeniz gerekir.
Subagent'ların yaptığı değişiklikleri rewind geri alır mı?
Genelde hayır. Bir subagent'ın düzenlemeleri, oturumunuzun checkpoint'lerine normalde yakalanmaz. Tek istisna, context: fork ile arka planda değil ön planda (background: false) çalışan bir skill'dir; bu, kendi turunuz sırasında çalışma ağacınızı doğrudan düzenlediği için rewind ile geri alınabilir. Diğer her subagent türü için (varsayılan arka plan skill'leri, /code-review --fix gibi arka plan çalıştırmalar dahil) değişiklikleri geri almak için git kullanmanız gerekir.
/rewind ile /branch arasındaki fark nedir?
/rewind aynı oturum içinde geriye dönüp kodu ve/veya konuşmayı önceki bir noktaya döndürür; ileri gittiğiniz yol kaybolur. /branch ise o ana kadarki konuşmanın bir kopyasını çıkarıp sizi o kopyaya geçirir, orijinal oturum diskte değişmeden kalır ve session picker'da görünmeye devam eder — böylece iki farklı yaklaşımı birbirini bozmadan paralel olarak deneyebilirsiniz.
Checkpoint sistemi git'in yerini tutar mı?
Hayır. Checkpoint'ler oturum içi, hızlı bir geri alma mekanizmasıdır; kalıcı sürüm geçmişi ve iş birliği için yine git kullanmanız gerekir. Ayrıca checkpoint'ler sembolik bağlantıları (symlink) ve sabit bağlantıları (hard link) geri yükleyemez, bu dosyalar için değişikliği elle ya da git ile geri almanız gerekir.
Aynı oturumu iki terminalde birden resume edersem checkpoint'ler nasıl davranır?
Aynı oturumu forklamadan (yani --fork-session kullanmadan) iki terminalde resume ederseniz, her iki terminaldeki mesajlar tek bir transkriptte iç içe geçer ve checkpoint'ler de bu tek transkript üzerinden ilerler. İki ayrı, birbirinden bağımsız geçmiş istiyorsanız /branch ya da --fork-session ile ayrı bir kopya çıkarmanız gerekir; aksi hâlde bir terminaldeki /rewind işlemi diğer terminalin de üzerinde çalıştığı ortak geçmişi etkiler.
Özet
Checkpoint sistemi, Claude Code'un her prompt öncesinde kodunuzun anlık görüntüsünü otomatik olarak aldığı, elle kurulum gerektirmeyen bir güvenlik ağıdır. /rewind (ya da boş prompt kutusunda çift Esc) ile bu geçmişteki herhangi bir noktaya dönebilir; kodu, konuşmayı ya da ikisini birden geri yükleyebilir, ya da bağlamı hedefli bir şekilde özetleyebilirsiniz. Ama sınırlarını bilmek şart: bash komutlarıyla yapılan değişiklikler, çoğu subagent düzenlemesi, oturum dışı değişiklikler ve symlink/hard-link dosyaları checkpoint tarafından izlenmez ve geri alınamaz — bunlar için git hâlâ vazgeçilmezdir. Aynı başlangıç noktasından farklı yaklaşımları paralel denemek istediğinizde ise /rewind yerine /branch'i tercih edin; ikisi birbirini tamamlayan, ama farklı amaçlara hizmet eden iki araçtır.
Claude Code'a etkili istem yazma ve yön düzeltme stratejileri için prompt engineering rehberime, checkpoint'lerin subagent'larla nasıl etkileştiğini daha ayrıntılı görmek isterseniz subagent rehberime göz atabilirsiniz.
Bu yazı Ahmet Bilgiç tarafından ahmetbilgic.com için yazılmıştır. Diğer yazılar için: medium.com/@ahmet_bilgic07