Bu cevap, üst düzey programcılarla nasıl ilgilenileceğini , en hızlı yolun git
nasıl öğrenileceğiyle ilgili olmayanları ele almaya çalışır git
- bunun için mükemmel git kitabı harikadır veya herhangi bir miktarda öğretici (=> Google). Bu cevaba ulaşmak için iyi bağlantılar Git'in tamamen işlevsel bir veri yapısı veya özellikle Git'in verilerinizi nasıl sakladığı kadar kısa .
Korkarım bu konuda oldukça kasvetli bir görüşüm var. Tam olarak senin ayakkabısında bulundum - Ben bir git
ineğim ve bir ekibi svn
ondan uzaklaştırmak istedim , yüzleşelim, sonuçlara katlandım. Benim durumumda, kendi algılamamı aktif olarak değiştirmeme ve bu insanları kabul etmenin “mutluluğa zorlanmayacak” olduğunu kabul etti. İnsanlar bilgisayar değil, onları programlamak inanılmaz zor. Halen denediğim için hala mutluyum, bu bana oldukça yumuşak bir şekilde ne yaptığımı ve profesyonel yaşamımda ne yapmak istemediğimi gösterdi.
Yeni şeyler söz konusu olduğunda motive olmaya başlayan insanlar var ve motive olmuş olanlar da var. Bunun bununla hiçbir ilgisi yok git
, ama git
özellikle de her zaman svn
“büyük bir psikolojik engel olan“ neden sadece iyiyse kullanmalıyız? ”Etkisine sahipsin.
Ayrıca, gerçekten grokking git
soyut veri yapılarına yoğun ilgi gerektirir. İnanılmaz gelebilir, ama benim deneyimlerime göre, hiç ilgisi olmayan ve basit dizilerden daha karmaşık olan elementler tarafından sıkılmış ve aşırı yüklenmiş programcılar var. Bunların yaptıkları işi yapmaları gerekip gerekmediğini ileri geri tartışabilirsiniz, ancak budur.
İnsanlar onunla ilgilenmiyorsa, anlamazlar. Sade ve basit. Bu ilgisizliğin okuldaki kötü notların asıl nedeni olduğuna bahse girerim, istihbarat eksik.
Bu, burada, aşağıdan yukarıya bilgi birikimine dayanarak uygulayacağım bir müfredat olacağını söyledi. Benim için işe yaramadı, ama kendin için bir ilham kaynağı olarak kabul edebilirsin.
GUI
Aşağıdaki yaklaşım eylemler için mutlaka GUI desteğine ihtiyaç duymazken ( git add
merhaba dünyadaki bir depoda ...), en başından itibaren, depoyu görselleştirmek için bir GUI'ye sahip olmak çok yardımcı olur . Hangisini kullanacağınıza karar veremiyorsanız, gitk
son çare olarak alın. Adamlarınız herhangi bir tür görsel editör kullanıyorsa, git
GUI bileşenlerini bulun .
(Statik) veri yapısı anahtardır
İç veri türlerini (bunlardan sadece üç artı biri var: BLOB'lar, ağaçlar, taahhütler, açıklamalı etiketler, en sonuncusu bu aşamada hiçbir önemi olmayan) ve yapılarını açıklayarak başlayın. Bunu beyaz tahtada / kurşun kalemle kolayca yapabilirsiniz; ağaç asla değiştirilemeyeceği gibi çizilmesi kolaydır, kelimenin tam anlamıyla sadece her zaman şeyler ekleyebilirsiniz. Yeni oluşturulan bir yerel depoda bir oyun oturumu gerçekleştirebilir git cat-file
ve gerçek nesnelere aslında reklamı kadar önemsiz olduklarını göstermek için kullanabilirsiniz .
Bunu anlamalarına yardımcı olabilirseniz
- ... tarihte kelimenin tam anlamıyla sadece 3 çeşit nesne var, hepsi çok basit, neredeyse önemsiz ve
- ...
git
alt komutanların çoğu bu nesnelere bir şekilde ya da başka şekilde "masaj yapar", neredeyse önemsiz operasyonlarla (temel olarak, sadece bir tane var: bir yere yeni bir taahhüt ekle) ve ...
- ... her şey hemen önünüzde görülebilir
ls
ve git cat-file
...
o zaman depoda olanın zihinsel çevirisine sahip olacaklar. Bu noktada, seniours olabilir internal'leri unutmayın svn
(veya "yeniden entegre" şube ve böyle ile? Hiç svn depo içinde kilitleri ile ilgili sorunlar vardı) gizli sihirli vardır ve bu edebilir onları biraz motive sadece.
Özellikle alışkın olan insanlarla ilgili bir sorun, svn
birinin işlediğinin (eylem değil nesnenin) her zaman tüm dizin ağacı olduğu fikrine alışmaktır . İçinde svn
, insanlar bireysel dosyalar işlemek için kullanılır. Bu radikal olarak farklı bir yaklaşım. Ah, aynı "taahhüt" teriminin hem statik bir nesne hem de bir eylem için kullanılması da bir işe yaramaz.
svn
Erkekler için diğer bir problem ise svn
ağaç değil, doğrusal bir tarih kullanmaktır. Bu, yine, çılgınca farklı. Yani bu, bu farklılıkların çok üzerinde durma zamanı .
Yapı açısından açıklanan eylemler
Bir havuzun hangi bölümlerinden oluştuğunu anladıklarında git
, onlara tam olarak bireysel git
alt komutanların bu anlamda ne yaptığını gösterme zamanıdır .
Ancak bahsettiğimiz add
, commit
yerel çalışma dizini ve sahne (işçi dizin deposu olarak aynı değildir sahne alanı gibi aynı olmadığını anladığından emin olun) ile birlikte.
Bu komutların sadece ağacı yetiştirdiğini anladıklarında (yine, bu aşamada, üç türden oluşur - bloblar, ağaçlar, taahhütler, yalnızca taahhüt eder), bir ilk yapabilir git push
ve git pull
(hızlı ileri sarma modunda! ) Onlara git
kelimenin tam anlamıyla sadece nesnelerini iten, hashların gerçekten sadece içerik karmaşası olduğunu, bu şeyleri bir dosya sistemi kopya komutu ve benzeri ile kolayca kopyalayabileceğinizi göstermek için.
Açıkçası, bu komutların gereksiz tüm seçeneklerinden uzak durun, git add hello.txt
burada konuşuyoruz .
Dallar
Dallanmanın özellikle svn
insanlar için zor olduğunu unutmayın , çünkü tamamen farklıdır. svn
Modeldir çok temelde görselleştirmek için bir şey olduğundan, görselleştirmek için daha kolay - bu düz görünümde olduğunu. git
Model çok değil. Dalların ve etiketlerin sadece bir yere işaret eden "yapışkan notlar" olduklarından ve statik, değişmez tarih açısından aslında "var olmadıklarından" haberdar olduklarından emin olun.
Sonra, onlarla yapabileceklerinizi göstermek için kolay bir örnek sonra örnek yapın. Kendine alışmış git
gibisin, orada motivasyon bulmakta zorlanmamalısın. Bunu her zaman ağacın nasıl büyüdüğü konusunda gördüklerinden emin olun.
Eğer buna sahiplerse git pull
, gerçekte nasıl olduğunu açıklayabilirsiniz git fetch && git merge
; Tüm depoların gerçekte tam olarak aynı nesneleri içerdiği ( git fetch
neredeyse scp
git git nesne dizini içindeki şeyleri kopyalamakla aynı ) vb.
Muhtemelen, eğer bu zamana kadar ilgilerini uyandırmayı başaramadıysanız, o zaman da pes edebilirsiniz, ancak o zamana kadar başarabilirlerse, ellerinde tüm zihinsel araçlara sahipler ve çok az olmalılar. Artık korku var. Gerisi (git iş akışı ...) o zamanlar yokuş aşağı olmalı.
Son sözler
Bu çok fazla çaba gibi geliyor ve gerçekten öyle. Bunu "bu proje için buna ihtiyacımız var" olarak satmayın, ancak "kişisel olarak geliştirmenize yardımcı olur ve tüm etkileşimlerinizde size yardımcı olur". Bunun için çok zamana ihtiyacın var ve zaman para. Bu konuda yönetim kabulünüz yoksa, buna değmeyebilir; belki patronunla konuşmalısın.
Kavramayacağınız gibi görünen geliştiricilere öğretmekten vazgeçmek istediğinize karar verirseniz, ancak git
gelecekte mutlaka kullanmanız gerekir , tüm etkileşimleri git
komut komutlarıyla veya tüm git
özellikleri alan bir GUI ile değiştirmeyi düşünün . Tüm hata kontrollerini vs. komut dosyalarına dökün ve çalışmasını sağlayın.