Bu konular hakkında birkaç iyi referans:
İndeksi bir kontrol noktası olarak kullanıyorum .
Yanlış gidebilecek bir değişiklik yapmak üzereyken - takip edebileceğimden emin olmadığım bir yönü araştırmak istediğimde veya bunun kavramsal olarak talepkar bir yeniden düzenleme veya değiştirme gibi iyi bir fikir olup olmadığından emin olmak istediğimde temsil türü - Çalışmamı indekste kontrol ederim. Bu son işlemimden bu yana yaptığım ilk değişiklikse, yerel veri havuzunu bir kontrol noktası olarak kullanabilirim, ancak çoğu zaman küçük adımlar kümesi olarak uyguladığım kavramsal bir değişikliğim var. Her adımdan sonra kontrol etmek istiyorum, ancak çalışmaya, test edilen koda geri dönene kadar taahhüdü kaydedin.
Notlar:
Çalışma alanı (kaynak) dizin ağacı görmek ve düzenlemek olduğunu dosyaları.
İndeks tek, büyük, ikili dosyadır <baseOfRepo>/.git/index
tüm güncel dalında dosyaları, onların listeler, sha1 toplamlarını, zaman damgaları ve dosya adını - o dosyaların bir kopyasını başka bir dizin değil.
Yerel havuz gizli dizin (olan .git
bir dahil) objects
sıkıştırılmış "blob" dosyası olarak repo her dosyanın tüm sürümlerini (yerel şubeleri ve uzak şube kopya) içeren dizinin.
Yukarıdaki resimde gösterilen dört 'diski' repo dosyalarının ayrı kopyaları olarak düşünmeyin.
Temel olarak Git taahhütleri için referanslar olarak adlandırılırlar. İki temel refs türü vardır: etiketler ve kafalar.
- Etiketler, tarihte belirli bir noktayı işaret eden sabit referanslardır, örneğin v2.6.29.
- Aksine, başlıklar daima proje geliştirmenin mevcut konumunu yansıtacak şekilde hareket ettirilir.
(not: olarak yorumladı tarafından Timo Huovinen , bu oklar değil kaydedilmesini işaret nelerdir, bu kadar iş akışı düzeni temelde olarak okları göstererek, 1 -> 2 -> 3 -> 4
nerede 1
ilk taahhüt ve 4
sonuncusu)
Şimdi projede neler olduğunu biliyoruz.
Ancak burada neler olduğunu bilmek için şu anda HEAD adı verilen özel bir referans var. İki ana amaca hizmet eder:
- Git'e, ödeme yaptığınızda hangi dosyaları almayı taahhüt ettiğini bildirir ve
- Git'e taahhüt ettiğinizde nereye yeni taahhütler koyacağınızı söyler.
Eğer çalıştırdığınızda git checkout ref
o işaret HEAD
tanımlamış ve ondan ekstreler dosyaları ettik ref. Çalıştırdığınızda git commit
, geçerli bir alt öğe olan yeni bir taahhüt nesnesi oluşturur HEAD
. Normalde HEAD
kafalardan birine işaret eder, bu yüzden her şey yolunda gider.
HEAD
mevcut dalın ucundaki taahhüttür. Şubeyi yeni kontrol ettiyseniz, yani değiştirilmiş dosyanız yoksa, içeriği çalışma ağacıyla eşleşir. Bir şeyi değiştirir değiştirmez, artık eşleşmez.