'In yarı gizli boş ağaç gıt
Git kimin iyi bilinen, ya da en azından sıralama-tanınmış, boş bir ağaç vardır:
4b825dc642cb6eb9a060e54bf8d69288fbee4904
(herhangi bir repo bu gördüğünüz, hatta yeni oluşturulan bir, git cat-file -t
git cat-file -p
).
Çok çalışıyor ve çok dikkatli ise bir bakıma gerçekten harika bir fikir olmasa da, bu boş ağacın dosyaları (answer to How do I add an empty directory to a git repository) olan bir dizini depolamak için kullanabilirsiniz.
Örnek kancaları biri yapar git diff-tree
, bir argüman olarak daha faydalı.
Benim merak ettiğim şey,
- ne kadar güvenilir bu—yani, git biraz ileride sürüm gıt bir nesne
4b825dc642cb6eb9a060e54bf8d69288fbee4904
numaralı olacak değil mi? - Neden boş ağaç (ya da var mı?) için sembolik bir isim yok.
(Hızlı ve kirli sembolik bir isim oluşturmak için bir yol, örneğin, .git/Nulltree
SHA1 koymaktır. Ne yazık ki her repo için bunu yapmak zorundasın. Sadece komut sihirli sayı koymak daha iyi gibi görünüyor, vb. Keşke sihirli sayılar için genel bir isteksizlik var.)
CEVAP
This thread söz:
Boş ağaç hep birlikte türetmek sha1, hatırlamıyorum eğer:
git hash-object -t tree /dev/null
Boş sha1 ağacı olarak bu komut sonucu bir değişken tanımlamak için daha güvenlidir sanırım bu yüzden (a güvenmek yerine "iyi bilinen değer").
Not, yazarın ilk istediğinde bazı GitHub repo Yukarı SHA1 pop boş işlemek olduğunu görürsünüz (bkz:"How I initialize my Git repositories"): . blog yazısı
$ GIT_AUTHOR_DATE="Thu, 01 Jan 1970 00:00:00 0000" GIT_COMMITTER_DATE="Thu, 01 Jan 1970 00:00:00 0000" git commit --allow-empty -m 'Initial commit'
Verecektir size
(Bkz: ağaç SHA1?)
Hatta boş üstünde mevcut yapılanların özeti rebase ("git: how to insert a commit as the first, shifting all the others?")
Her iki durumda da, bu boş ağaç tam SHA1 değerini güvenmeyin.
Sadece bir izleyinen iyi yöntem, ilk boş olan repo başlatılıyor işlemek.
Bunu yapmak için:
git init my_new_repo
cd my_new_repo
git config user.name username
git config user.email email@com
git commit --allow-empty -m "initial empty commit"
Yaratılış (SHA1 anlamı her zaman farklı olacak commit) repo için SHA1 bir özel yapıyor, kullanıcı adı, e-posta, bir tarih oluşturur.
Ama ağaç katliamı olacak tarafından başvurulan4b825dc642cb6eb9a060e54bf8d69288fbee4904
boş ağaç SHA1.
git log --pretty=raw
commit 9ed4ff9ac204f20f826ddacc3f85ef7186d6cc14
tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 <====
author VonC <vonc@laposte.net> 1381232247 0200
committer VonC <vonc@laposte.net> 1381232247 0200
initial empty commit
Sadece bir ağaç katliamı göster (ağaç SHA1 taahhüt ekran):
git show --pretty=format:%T 9ed4ff9ac204f20f826ddacc3f85ef7186d6cc14
4b825dc642cb6eb9a060e54bf8d69288fbee4904
Eğer bu işlerse, boş bir ağaç başvuran, gerçekten seninilktaahhüt, boş ağaç SHA1 ile gösterebilirsiniz:
git log --pretty=format:%h --reverse | head -1 | xargs git show --pretty=format:%T
4b825dc642cb6eb9a060e54bf8d69288fbee4904
(ve hatta Windows üzerinde, Gnu On Windows komutları ile çalışır)
Veri WPF bir ağaç görünümü öğeye bağla...
Kullanarak gizli travis-cı tuşları apı...
Nasıl halka gizli bir Özü değiştirebil...
Orada hiç Ağaç neden<T> sınıfta ...
Herhangi bir derinlik için tek bir sor...