Ana içeriğe geç

Git Dallarını Listeleme: Pratik Bir Rehber

Yerel ve uzak Git dallarınızı git branch ile listelemeyi ve filtrelemeyi öğrenin. git fetch, git checkout ve git prune ile sorun gidermede ustalaşın.
· 9 dk. oku

Yapay Zeka ile Keşfedin

Aynı anda birden fazla özellik üzerinde çalıştıysanız, bu durum size tanıdık gelebilir: bir Git komutu çalıştırırsınız ve artık geçen haftaki çalışmanızın tam olarak nerede olduğunu bilemezsiniz.

Projeler büyüdükçe bu sorun daha yaygın hale gelir. Başlangıçta bir depoda yalnızca main dalı olabilir. Ancak zamanla ekipler yeni özellikler, hata düzeltmeleri, deneyler, sürümler ve acil hotfix’ler için dallar oluşturur. 

İşte bu noktada Git’te dalları listelemek kritik hale gelir. Şu pratik sorulara yanıt verir:

  • Şu anda hangi dalda çalışıyorum?
  • Bilgisayarımda başka hangi dallar var?
  • Uzak depoda hangi dallar bulunuyor?

Bu rehberde Git’te dalları listelemenin temellerine, bunu nasıl yapacağınıza ve yaygın sorunları nasıl gidereceğinize bakacağız.

Git’e tamamen yeniyseniz, daha ayrıntılı dal yönetimi konularına dalmadan önce güven kazanmanıza yardımcı olması için Introduction to Git kursumuzu almanızı öneririm.

Git Dallarını Anlamak

Onları listelemeye başlamadan önce, Git dallarının ne olduğunu netleştirelim. 

Yaygın bir yanılgı, Git dallarının ayrı klasörler veya bir kod tabanının tam kopyaları olduğudur; oysa gerçekte bir Git dalı, belirli bir commite işaret eden hafif bir göstergedir.

Bunu, istikrarlı ana kodunuzu etkilemeden özellikler oluşturabileceğiniz veya denemeler yapabileceğiniz paralel bir zaman çizelgesi gibi düşünebilirsiniz. Bu mimari, dal oluşturmayı ve birleştirmeyi son derece hızlı ve verimli kılar.

git branch

Kaynak: Git

Git, bu zaman çizelgelerindeki mevcut konumunuzu, her zaman üzerinde çalıştığınız dalı işaret eden HEAD adlı özel bir referansla izler. Dallar yalnızca işaretçiler olduğundan, bağlam değiştirmek anlıktır ve ağır dosyaları taşımayı gerektirmez.

Daha fazla ayrıntı için Git dalları hakkındaki eğitimimize göz atın veya Git cheatsheet’imizi inceleyin.

Git’te Yerel Dalları Nasıl Listeleyebilirsiniz

Bu kavramsal temeli oluşturduğumuza göre, şimdi deponuzdaki yerel dalları nasıl listeleyeceğinize bakalım.

Yerel dal, bilgisayarınızda var olan daldır. Depo’nuzun .git klasörü içinde bulunur ve bir dizi commite hareketli bir işaretçiyi temsil eder. Yerel bir dala geçebilir, değişiklikler yapabilir ve üzerinde yeni commitler oluşturabilirsiniz.

Yerel dalları şu şekilde düşünmek faydalıdır:

  • Depo’nun sizin kopyanıza aittirler
  • Yeni değişiklikleri commitlediğinizde ilerlerler
  • Başkaları kod gönderdiğinde otomatik olarak güncellenmezler

git branch kullanma

Yerel dalları listelemek için en yaygın ve temel komut oldukça basittir:

git branch

Bu komutu ek seçenekler olmadan çalıştırdığınızda Git size tüm yerel dalları gösterir.

git branch hakkında hatırlanması gereken önemli noktalar:

  • Yalnızca yerel dalları gösterir, uzak olanları değil
  • İnternetle bağlantı kurmaz
  • Dosyaları, commitleri veya dal geçmişini değiştirmez

Güvenli ve hızlı olduğu için birçok geliştirici yeni bir işe başlamadan veya bağlam değiştirmeden önce alışkanlıkla git branch çalıştırır.

Çıktıyı anlamak

git branch komutunun gösterebileceği bir örnek:

 bugfix/login-timeout
  feature/payment-refactor
* main

Bu çıktı basit görünse de içinde birkaç önemli ayrıntı barındırır.

İlk olarak, yıldız işareti (*) şu anda checkout yapılmış olan dalı gösterir. Çalışma dizininiz şu anda bu dala bağlıdır. Oluşturacağınız yeni commitler bu dala eklenecektir.

İkinci olarak, Git genellikle geçerli dalı yeşil renkle vurgular. Bu, yalnızca terminalin görsel bir yardımıdır ve Git’in davranışını değiştirmez.

Üçüncüsü, gösterilmeyenlere dikkat edin:

  • Commit tarihleri yok
  • Yazar adları yok
  • Uzak bilgi yok

Bu kasıtlıdır. Git, varsayılan çıktıyı kısa tutar; böylece taraması ve diğer komutlarla birleştirmesi kolay olur.

Yeni başlayanlara ipucu: Bir Git komutu çalıştırdıktan sonra terminaliniz "takılmış" gibi görünürse q tuşuna basmayı deneyin. Git uzun çıktıları göstermek için sıklıkla bir sayfalayıcı kullanır; bu ekranı kapatmanın normal bir yoludur.

Yalnızca geçerli dalı almak

Bazen tüm dalları listelemek gereksizdir. Yalnızca şu anda hangi dalda olduğunuzu bilmek isteyebilirsiniz. Git bunun için özel bir komut sağlar:

git branch --show-current

Çıktı yalnızca dal adıdır:

main

Bunun faydalı olduğu yaygın durumlar:

  • Kod göndermeden önce dalınızı kontrol etmek
  • Betiklerde dal adını günlüğe kaydetmek
  • Dal adını otomasyon veya CI hatlarında kullanmak

Git ayrık bir HEAD durumunda ise bu komut hiçbir şey döndürmez. İlk başta garip gelse de, bu aslında bir dalın checkout edilip edilmediğini tespit etmesi gereken betikler yazarken yardımcıdır.

Yaygın hata: Bazı kullanıcılar bir dal adı görünmediğinde Git’in "bozuk" olduğunu düşünür. Çoğu durumda bu, şu anda bir dalda değil, belirli bir commit üzerinde olduğunuz anlamına gelir.

Git’te Uzak ve Tüm Dalları Nasıl Listeleyebilirsiniz

Git’te uzak ya da tüm dalları listelemek, yerel olanları listelemeye oldukça benzer çalışır.

Git’te uzak dalları listelemek

GitHub veya GitLab gibi uzak depoların kendi dalları vardır. Bunları görmek için -r bayrağını ekleyin:

git branch -r
  origin/HEAD -> origin/main
  origin/bugfix/login-timeout
  origin/feature/payment-refactor
  origin/main

Bu örnek çıktı ilk başta kafa karıştırıcı olabilir; gelin parçalayalım.

Burada gördükleriniz uzak-izleme dallarıdır. Bunlar, Git’in uzak deponun en son bilinen durumunu hatırlamak için kullandığı yerel referanslardır.

Anlaşılması gereken kilit noktalar:

  • Bu dallar yerelde saklanır
  • Yalnızca fetch yaptığınızda güncellenirler
  • Kendiliğinden hareket etmezler

Yeni başlayanlara ipucu: Uzak-izleme dallarını Git’in not defteri gibi düşünün. Git, en son kontrol ettiğinizde uzağın nasıl göründüğünü yazar; ancak siz açıkça fetch yapmadıkça o not defterini güncellemez.

Git’te tüm dalları listelemek

Hem yerel dalları hem de uzak-izleme dallarını birlikte görmek için -a bayrağını kullanın:

git branch -a
* main
  feature/payment-refactor
  remotes/origin/bugfix/login-timeout
  remotes/origin/main

Bu birleşik görünüm, yerel dallarınızın uzak olanlarla nasıl ilişkili olduğunu anlamanıza yardımcı olur.

Dikkat edilmesi gereken adlandırma kalıpları:

  • Yerel dallar main gibi basit adlarla görünür

  • Uzak-izleme dalları remotes/origin/ altında görünür

Bu görünüm, var olan bir uzak dalı izleyen yeni bir yerel dal oluşturup oluşturmamaya karar verirken özellikle kullanışlıdır. Bir depoyu klonlayıp belirli bir dal üzerinde çalışmanız gerekiyorsa, Git’te belirli bir dal nasıl klonlanır rehberimize göz atın.

Önce her zaman fetch yapın

Bir ekip arkadaşınız yeni bir dal gönderdi ve siz göremiyorsanız, en yaygın neden yerel önbelleğinizin güncel olmamasıdır. 

Çözüm fetch etmektir:

git fetch

git fetch şunları yapar:

  • Uzaktaki en son dal bilgilerini indirir
  • Uzak-izleme dallarınızı günceller
  • Çalışma dosyalarınızı değiştirmez

Bu komutu dilediğiniz zaman güvenle çalıştırabilirsiniz. Kod birleştirmez veya çalışmalarınızı üzerine yazmaz. Birçok ekip, dalları incelemeden önce git fetch işlemini rutin bir adım olarak uygular.

Yaygın hata: Yeni başlayanlar sıkça git fetch ile git pull’u karıştırır. Fetch yalnızca dal bilgisini güncellerken pull, değişiklikleri geçerli dalınıza da birleştirir.

Git Dal Listeniz Hakkında Daha Fazla Ayrıntı Nasıl Alınır

Bazen dal adları yeterli olmaz. Ek ayrıntılar görmek isterseniz işinizi kolaylaştıracak birkaç yararlı bayrak vardır.

Son commitleri görüntüleme

Her dalın aslında ne içerdiğini görmek için şunu kullanın:

git branch -v

Çıktı şu şekilde görünebilir:

* main   a1b2c3d Fix typo in README
  feature/payment-refactor e4f5g6h Refactor payment service

Gördüğünüz gibi -v bayrağı önemli bağlamlar ekler:

  • Kısa commit özeti, dalın şu anda nereye işaret ettiğini gösterir
  • Commit mesajı, dalın amacına dair ipucu verir

Bu, bir dalı checkout etmeden ne için olduğunu anlamanın en kolay yollarından biridir.

Yeni başlayanlara ipucu: Bir dalın silinmesinin güvenli olup olmadığından emin değilseniz, son commit mesajına bakmak iyi bir ilk ipucudur. Dalları kaldırmaya dair eksiksiz bir rehber için Git dalları nasıl silinir eğitimimize bakın.

Yukarı akış bağlantılarını kontrol etme

Yerel dallar genellikle karşılık gelen bir uzak dalı izler. Bu ilişkiyi görmek için şunu çalıştırın:

git branch -vv
* main   a1b2c3d [origin/main] Fix typo in README
  feature/payment-refactor e4f5g6h [origin/feature/payment-refactor] Refactor payment service

Bu çıktı size şunları söyler:

  • Yerel dalınızın hangi uzak dala bağlı olduğu

  • git pull’un nereden çekeceği

  • git push’un nereye göndereceği

Bir dalın upstream’i yoksa köşeli parantez içinde hiçbir şey görünmez. Bu, genellikle push veya pull hatalarını açıklar.

Yaygın hata: Upstream’i olmayan bir dalda git pull çalıştırmaya çalışmak genellikle başarısız olur. Bu durumda önce bir upstream dalı ayarlamanız veya dalı ilk kez göndermeniz gerekir.

Dalları tarihe veya sürüme göre sıralama

Yakın zamanda aktif olan dalları bulmak için commit tarihine göre sıralayabilirsiniz:

git branch --sort=-committerdate

Bu, en son güncellenen dalları üste, daha eski dalları alta yerleştirir.

Sürüm dalları olan depolarda, anlamsal sıralama daha kullanışlıdır:

git branch --sort=v:refname

Bu, sürüm numaralarına saygı duyar ve kafa karıştırıcı alfabetik sıralamayı önler.

Git’te Dal Listesini Nasıl Filtrelersiniz

Belirli bir dalı arıyorsanız, filtreleme çok yardımcı olabilir. Bunu birkaç önemli bayrakla nasıl yapacağınızı göstereceğim.

Ada göre desenle arama

Özellikle büyük depolarda doğru dalı bulmak için ada göre filtrelemek size çok zaman kazandırabilir. --list bayrağını arama teriminizle birlikte kullanarak ada göre filtreleyebilirsiniz:

git branch --list 'feature/*'

* karakterinin joker olarak kullanıldığına dikkat edin: Sonuç yalnızca deseni eşleyen, yani feature ile başlayan dalları gösterir. Ekipler, işleri düzenli tutmak için sıklıkla feature/, bugfix/ veya hotfix/ gibi önekler kullanır. Bunları dallarınız için klasörler gibi düşünün.

Birleştirilmiş ve birleştirilmemiş dalları bulma

İki çok önemli filtre şunlardır:

git branch --merged
git branch --no-merged

Bu komutlar, diğer dalları geçerli dalınıza göre karşılaştırır.

  • --merged, çalışmaları zaten dahil edilmiş dalları gösterir (Git merge hakkında daha fazlasını öğrenin)

  • --no-merged, hâlâ benzersiz commitler içeren dalları gösterir

Güvenlik hatırlatması: --merged kullanmadan önce her zaman doğru taban dalında (main veya develop sıklıkla) olduğunuzu iki kez kontrol edin. Sonuçlar geçerli dalınıza bağlıdır.

Bir commitin hangi dalda olduğunu bulma

Bir commit özeti biliyor ve nerede bulunduğunu öğrenmek istiyorsanız şu komutu kullanın:

git branch --contains <commit-hash>

Bu, hataları takip ederken veya bir düzeltmenin birleştirildiğini doğrularken kullanışlıdır.

Örneğin, bir iş arkadaşınız size şunu söylediğinde: "Şu commit hash’inde bir hata buldum; hangi dallar bundan etkileniyor?" Bu komutu kullanarak hatanın tam yerini saptayabilirsiniz.

İleri düzey iş akışları için filtreleri birleştirme

Gösterdiğim filtreler, sonuçları daha da daraltmak için birleştirilebilir. Bir örneğe bakalım:

git branch --list 'feature/*' --no-merged

Bu komutun sonucu, tüm birleştirilmemiş feature/ dallarını hızla gösterir ve ekibin düzenli kalmasına yardımcı olur.

Yaygın Sorunların Giderilmesi

Sorunlarla karşılaşırsanız endişelenmeyin; en yaygın sorunlar oldukça kolay çözülebilir.

Eksik uzak dallar

Bir başkasının gönderdiği bir dalı göremiyorsanız, en olası neden fetch yapmayı unutmuş olmanızdır. Sorun gidermek için:

  1. git fetch çalıştırın

  2. Sonra dalları yeniden listeleyin

Eksik fetch sorunsa, bu hızlı düzeltme yerel görünümünüzü anında günceller.

Ayrık HEAD durumu

Bazen git branch çıktısı şöyle görünür:

* (HEAD detached at a1b2c3d)

Bu, bir dalda olmadığınız anlamına gelir. Doğrudan belirli bir commit’i görüntülüyorsunuz.

Ayrık HEAD durumunda olmak tek başına tehlikeli değildir; ancak yeni commitler, bir dal oluşturmadığınız sürece daha sonra bulunması zor olabilir.

Normal çalışmaya dönmek için mevcut bir dala geçin:

git checkout <branch-name>

Modern alternatif: Git 2.23+ sürümlerinden beri, dallar arasında geçiş için özel olarak tasarlanmış, daha temiz ve güvenli bir komut olan git switch <branch-name> kullanabilirsiniz.

Ayrıca, -b bayrağını kullanarak mevcut konumunuzdan yeni bir dal oluşturabilirsiniz:

git checkout -b <new-branch-name>

Silmeden sonra dallar hâlâ görünüyor

Uzak sunucuda silinen dallar hâlâ görünüyorsa, yerel referanslarını şu komutla temizleyebilirsiniz:

git remote prune origin

Bu, eski referansları temizler ve deponuzu düzenli tutar.

İpucu: Alternatif olarak, her fetch işleminde git fetch --prune kullanabilirsiniz; böylece depo tek adımda hem güncellenir hem temizlenir.

Sonuç

Git’te dalları listelemek, deponuzu anlamanıza yardımcı olan temel bir beceridir. Bu eğitimde ele alınan komut ve bayraklar, hatalardan kaçınmanıza ve başkalarıyla güvenle çalışmanıza yardımcı olacaktır. 

Yeni bir projeye başlarken, hangi tür bir dal yapısına ihtiyaç duyacağınıza dair düşünmek genellikle değerdedir. Bazı öneriler için, Git dal stratejisi hakkındaki bu rehbere göz atın.

Temellerin ötesine geçmeye hazır mısınız? Git Fundamentals yetkinlik yolu, başlangıçtan ileri düzeye geçmek için gereken kavramları ve uygulamalı deneyimi sunar.

Git Dallarını Listeleme Hakkında SSS

Yerel ve uzak dallar arasındaki fark nedir?

Yerel dallar makinenizde bulunur. Uzak dallar, uzak deponun dallarının durumunu yansıtır.

Hangi dalların zaten birleştirildiğini nasıl anlarım?

Geçerli dala değişiklikleri zaten dahil edilen dalları görmek için git branch --merged komutunu çalıştırın.

Bir dalı listeledikten sonra silmek güvenli midir?

Evet, eğer birleştirildiyse. git branch -d branch-name komutunu kullanın. Git, güvenli şekilde birleştirilmemişse silmeyi engeller. Git, bir dalı, geçerli dalınıza birleştirildiyse veya uzak depoya gönderildiyse "güvenli" kabul eder.

Uzakta var olan bir dalı neden göremiyorum?

Muhtemelen yerel depo henüz fetch etmedi. git fetch çalıştırın, ardından uzak dalları görmek için git branch -r kullanın.

git branch ne gösterir?

Yalnızca yerel dallarınızı listeler. Geçerli dal * ile işaretlenir. Uzak dalları yalnızca -r bayrağını eklediğinizde gösterir.

Dalları en son etkinliğe göre nasıl sıralayabilirim?

git branch --sort=-committerdate kullanarak dalları en yeni commitleri en üstte olacak şekilde görüntüleyin. Bu, sizin veya ekibinizin yakın zamanda üzerinde çalıştığı dalları bulmak istediğinizde yardımcı olur. Ayrıca, sıralanmış listenin yanında commit mesajlarını görmek için git branch -v --sort=-committerdate gibi diğer bayraklarla birleştirebilirsiniz.

Austin Chia

Yazar

Austin Chia

Ben Austin, sağlık sektöründe veri bilimci ve veri analisti olarak yıllara dayanan deneyime sahip bir blogger ve teknoloji yazarıyım. Biyoloji geçmişiyle başladığım teknoloji yolculuğumda, şimdi teknoloji blogum aracılığıyla başkalarının da aynı geçişi yapmasına yardımcı oluyorum. Teknolojiye olan tutkum, onlarca SaaS şirketine yazılı katkılar sunmama, başkalarına ilham vermeme ve deneyimlerimi paylaşmama vesile oldu.

Konular

İlgili