Git'te dallar, taahhütlerin bir asiklik grafiğinde (DAG) taahhütlere sadece işaretçilerdir (referanslar). Bu, bir şubeyi silmenin yalnızca taahhütlere yapılan referansları kaldırdığı anlamına gelir, bu da DAG'daki bazı taahhütlere ulaşılamaz, dolayısıyla görünmez olabilir. Ancak, silinen bir dalda bulunan tüm taahhütler, en azından ulaşılamayan taahhütler budanana kadar (örn. Kullanarak git gc
) depoda olacaktır .
git branch -d
Bir şubeyi silmenin erişilemez taahhütler bırakmayacağından emin olamazsa, bir şubeyi silmeyi reddedeceğini unutmayın . git branch -D
Ulaşılamayan taahhütler bırakabiliyorsa, bir dalın silinmesini zorlamak için daha güçlü kullanmanız gerekir .
Ulaşılamaz taahhütlerin, eğer mevcutsa, sadece silinmiş bir dalın son ucu ile mevcut başka bir dalla birleştirilen bir taahhüt, herhangi bir etiketlenmiş taahhüt veya dallanma noktası arasındaki taahhütler olduğuna dikkat edin; hangisi daha sonra. Örneğin aşağıdaki durumda:
---- O ---- * ---- * ---- / M ---- * <- master <- KAFA
\ /
\ --. ---- .-- / - x --- y <- silinen şube
yalnızca 'x' ve 'y' işlemlerine şube silindikten sonra erişilemez hale gelir.
Silinen bir dalda gc.reflogExpire
, varsayılan 90 gün içinde ameliyat olsaydınız, silinen bir dalın son ucunu HEAD reflog'a kaydedersiniz (bkz . git reflog show HEAD
Veya git log --oneline --walk-reflogs HEAD
). Silinmiş işaretçiyi kurtarmak için HEAD reflog'u kullanabilmeniz gerekir. Ayrıca, bu durumda, yalnızca silinen bir daldaki erişilemez taahhütlerin, gc.reflogExpireUnreachable
varsayılan olarak 30 gün olan bu süre içinde budama (kaldırma) işleminden korunacağını unutmayın.
HEAD için reflog'da yeni silinen bir dalın ucunu git fsck
bulamazsanız, "erişilemeyen <sha1>" değerini bulmak için kullanmayı deneyebilir ve silinen dalın ucunu bulmak için ( git show <sha1>
veya aracılığıyla git log <sha1>
) inceleyebilirsiniz .
Silinmiş bir dalın ucunu nasıl bulduğunuzdan bağımsız olarak, silme işlemini geri alabilir veya daha önce silinen bir dalı yeniden oluşturabilirsiniz.
git branch <deleted-branch> <found-sha1-id>
Bununla birlikte, bir şube için yeniden yapılanmanın kaybedileceğini unutmayın.
Ayrıca, verilen bir adla bir şube ipucununcontrib/
izlerini bulmaya ve yeniden diriltmeye ( silmeyi geri almaya) yardımcı olan git-resurrect.sh komut dosyası da vardır .