Git'i öğrenemeyen geliştiriciler için ne yapabilirim? [kapalı]


68

bağlam

8 mühendis ekibim şu anda bir sonraki büyük şeyimiz için Git'e (Subversion'dan) geçiyor. Git'i almayı zorlaştıran bir avuç dolusu 'daha deneyimli' mühendisimiz var. Kullanıcı el kitaplarını, eğitim etkinliklerini ve beyaz tahta oturumlarını sağlamamıza rağmen, aynı önemsiz soruları aldım. Birkaç gün içinde her şeyi toplayan iki Junior danışmanımız vardı ve bu konuya gerçekten ışık tuttu. Bu Git ile sınırlı bir kalıp değil, sonuç olarak görülebilir hale geldi.

Soru

Özellikle öğrenemeyen / öğrenemeyen mühendisler için özellikle olumlu hissetmiyorum - özellikle burada sahip olduğumuz kıdem düzeyindeki personel. Ancak ekibin başarılı olmasını ve harika bir ürün geliştirmesini istiyorum. Merkezi bir Git Akış modeli kullanıyoruz ve yeni terminolojinin onları şaşırttığını hissediyorum.

Bu çalışanların Git'i öğrenmelerine yardımcı olmak için yapabileceğim bir şey var mı?

Sourcetree , tüm ekip tarafından kullanılan müşteridir.


1
Yorumlar genişletilmiş tartışmalar için değildir; bu konuşma sohbete taşındı .
maple_shaft

3
Fire vs keep basit ikili mantığı bilgisayarlar için işe yarayabilir, insanlar için değil. Git yönünün ötesinde ele almaya hazır olduğunuzda sorunuz için workplace.stackexchange.com adresini ziyaret etmek isteyebilirsiniz .
Frank


1
Bu gerçekten bir insan / psikoloji problemi, bir yazılım mühendisliği problemi değil.
Jesper,

@ Jesper evet ve hayır. İşyerine koyacaktım ama hemen uygulanabilecek Git'e özel tavsiyeler (aldım!) İçin potansiyel gördüm.
Gusdor

Yanıtlar:


148

Onlara bir oyuncak ver.

Git zor. Özellikle de farklı bir paradigmada kaynak kontrolü yapıyorsanız. Git'le ilk çalışmaya başladığımda yapıyı kırdım. Beni öyle paranoyak yaptı ki her şey bitene kadar kontrol etmek istemedim. Klasörlerde sürümleri saklıyordum. Sonunda neyi aşmak için ihtiyacım olduğunu anladım:

Oynamak için güvenli bir yere ihtiyacım vardı.

Bunu yaptıktan sonra, kasıtlı olarak sorunlara yol açıyordum, böylece onları nasıl düzelteceğimi öğrenebildim - hepsini güvenli yerimde. Kesilmiş olsa bile yine de iyi bir duruma dönebildiğim bir kalıp geliştirdim. Çok geçmeden insanlar git konusunda bana yardım için geliyorlardı. Çünkü ben bir oyuncakla oynamak için zaman ayırdım.

Onları derinlere attıysanız, yüzmeyi başarırlarsa şanslısınız.


36
Bu cevabı seviyorum ama aklıma başka bir soru daha geliyor: “gerçek iş yapmakla meşgulken” bu oyuncakla oynamalarını nasıl teşvik edersiniz?
David Arno

18
Gerekirse yapmaları için onlara kredi verin. Eğer satabileceğini düşünüyorsanız, "Git Nitelikli" sertifikaları dağıtın. Fakat cidden, eğer bu onların doğal olarak ilgisini çekmiyorsa Git'ten daha büyük sorunlarınız var. Tüm geliştiriciler, geliştirici araçlarını kullanabilmelidir.
candied_orange

48
@DavidArno Diğer çalışmalardan bağımsız olarak, herkesin günde bir saatini harcamasını söyle. Hatta iki saat. Kaynak kontrolünü doğru kullanabilmek bir proje için çok önemlidir. Bu araçları öğrenmek “gerçek iş”.
coinbird

16
'' Gerçek işlerle uğraşırken '' bu oyuncakla oynamaları için onları nasıl motive ediyorsunuz? '- Bu gerçek bir iş.
David,

18
Şaşırdım Kimse zorunlu xkcd'den bahsetmedi !
GnP

32

Ortalama bir dev, git git pek çok kaliteye ihtiyaç duymaz. Dağınık bir kaynak kontrol sistemidir ancak çoğu ekip onu zorlamak için bir merkezi kanon repo ile kullanacaktır.

Takımınızın ihtiyaç duyacağı temel komutlar:

  • Uzaktaki değişiklikleri çekin ve birleştirin ve ortaya çıkan çatışmaları ele alın (potansiyel olarak yeniden düzenleme)
  • taahhütleri yerine getirmek ve iadeyi taahhüt etmek (ya da değişikliklerin gözden geçirildikten sonra ana duruma getirmek için sahneleme deposuna / şubesine gitme)
  • Destek için: yanlış bir şey yaptıktan sonra karışıklığı düzeltmek.

daha gelişmiş kullanıcıların ihtiyaç duyacağı kullanıcılar

  • yerel komisyonları ele almak
  • dalları yönet

Git'i tanımayanlar ve öğrenmek istemeyenler için, birkaç hızlı takma komut verin ve her şeyin doğru olduğundan emin olun (yeni dosyalar ekleyin, silinen dosyaları repodan kaldırın, vb.).

Bunların iyi belgelendiğinden ve terbiyesizce aptal olduklarından emin olun.

Bu, xkcd çizgi romanının damarındadır , sadece komutları ezberleyin ve bir uzmana sorduklarında işlerin fazla karışıklığa uğramamasını umut edin.


8
Gitflow iş akışını kullanıyor, böylece dalları yönetmek gelişmiş bir konu olarak görülmemeli - geliştiricilerin anlaması gereken temel komutun bir parçası. Git genel olarak şube yönetimini gelişmiş olmaktan çok temel bir şey olarak ele alır.
slebetman

5
@slebetman: Ona bir isim vermek daha az karmaşık veya zor değil.
Robert Harvey

3
Daha gelişmiş kullanıcıların ihtiyaç duyacağı bir şey olarak “yerel işlemlerle ilgilen” den söz ediyorsunuz. Teorik olarak kendi bilgisayarınızda sürümleri yönetmek, diğer kodlayıcılarla paylaşılan uzak bir repoda sürümleri yönetmenin zorluk derecesinde daha düşük olması gerekir.
Tulains Córdova

Belki de tam zamanlı bir yayınlama yöneticisine sahip bir yerde çalışıyorsanız, o zaman şubeler için endişelenmenize gerek yoktur, ancak devs her yerde bir test şubesine özellikleri zorluyor olmalı ve test şubesinden yüksek öncelikli düzeltmeleri birleştirmelidir. geliştirme şubesi ve test şubesinden üretime çıkacak sürümlerin yapılması
Brian Gordon

@RobertHarvey: Dallanma ne karmaşık ne de zor. Bu temel. Gitflow iş akışı bugfix bültenleri gibi köşe durumlarda karmaşıktır, ancak ortak kullanım durumu basittir.
slebetman

28

Git Kullanıcı Arabirimi kullanmalarını sağlayın.

TortoiseSVN ile deneyime sahiplerse, TortoiseGit (yalnızca Windows) neredeyse tamamen aynı şekilde çalışır. Aksi takdirde, SourceTree (Windows + Mac) harikadır - SourceTree sayesinde Git'teki karmaşık görevlerde kolayca ustalaşan birçok geliştirici olmayan KG'mız var.


4
SoruceTree için +1. ~ 30 öğrenciden oluşan bir kolej projesi için SourceTree kullanarak Subversion'dan Git'e geçiş yaptım. İnsanlar temelleri öğrendikten hemen sonra çok çabuk adapte oldular ve dokümantasyonla ilgili pek çok bağlantımız vardı. Ayrıca test dallarında denemeleri teşvik ettim. İnsanların yaklaşık% 75'inin yarıyılın sonuna kadar rahat kullandığını ve bazılarının komut satırını kullanmaya başladığını söyleyebilirim.
Dewick47

5
Ona zaten kullandığı bir GUI kullanmasını söylemek, soruyu cevaplamıyor.
WGroleau

9
Orijinal gönderi, SourceTree’nin bu cevap gönderildikten sonra kullanıldığını içerecek şekilde düzenlendi.
Dewick47,

7
Ayrıca GitKraken'i önereceğim. CS capstone proje ortaklarımdan bazılarını Git'e tanıtmak için kullandım. 15 dakika içinde almışlar - çok basit ve çok güzel, sezgisel bir arayüze sahip. Ve hayır, GitKraken pazarlaması ile değilim.
Chris Cirefice

2
git guive gitkgit'in kendisi ile gel, ve onları öğrenmek için komut satırı araçlarından çok daha kolay buldum. Komut satırı odaklıysanız, basit GUI'ler temeller için mükemmeldir git rebaseve komut satırından daha karmaşık şeyler yapabilirsiniz .
Peter Cordes

25

Bu cevap, üst düzey programcılarla nasıl ilgilenileceğini , en hızlı yolun gitnası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 gitineğim ve bir ekibi svnondan 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 gitsoyut 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 addmerhaba 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, gitkson çare olarak alın. Adamlarınız herhangi bir tür görsel editör kullanıyorsa, gitGUI 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-fileve 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
  • ... gitalt 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ülebilirls 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, svnbirinin 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.

svnErkekler için diğer bir problem ise svnağ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 gitalt komutanların bu anlamda ne yaptığını gösterme zamanıdır .

Ancak bahsettiğimiz add, commityerel ç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 pushve git pull(hızlı ileri sarma modunda! ) Onlara gitkelimenin 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.txtburada konuşuyoruz .

Dallar

Dallanmanın özellikle svninsanlar için zor olduğunu unutmayın , çünkü tamamen farklıdır. svnModeldir ç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. gitModel ç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ış gitgibisin, 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 fetchneredeyse scpgit 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 gitgelecekte mutlaka kullanmanız gerekir , tüm etkileşimleri gitkomut 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.


11
Muhtemelen doğrudur, ancak bu yaklaşımla ilgili sorun, çoğu programcının günlerce kaynak kodu kontrolünün ayrıntılarını anlamaya çalışmak istememesidir. Sadece çalışmasını istiyorlar. . IMO, git bu konuda başarısız olur. Gerçek kodunuzun BLOB'lar için endişelenmek için nasıl çalıştığını anlamak yeterince zor.
user949300

1
Yorumunuz% 100 gerçek, @ user949300 değiştirilmesi konusunda sonunda dolayısıyla benim quip olduğu gitiçin bazı süper porselen ile değil kullanmak gitetkili. OP'nin, işlerine uygun olanı (dahil olan zaman dahil) benimsemesi gerekecektir. Yazdığım gibi, herkesi “ele geçirmek” için bu (ya da başka) yaklaşımda başarılı değildim, ama yine de (tekrar denemek zorunda kalsaydım) yine benim yaklaşımım olurdu.
AnoE

1
Açıkçası ben gerçekten nasıl çalıştığını anlamadan git kullanarak oldukça ileri gidebilirsin düşünüyorum. Şubeyi biliyorsanız, ekleyin, itin ve çekin, normal insanın kullanabileceğinin% 95'i kadardır.
Casey,

6
@ user949300 "Günler" Git'i öğrenme konusundaki deneyimime uymuyor. Git, herhangi bir projede gördüğüm en iyi belgelere sahip. Tüm temel bilgileri, bir sürü diyagramla kolayca erişilebilir bir biçimde yazılmış olan Pro Git'in ilk 3 bölümünü okuyarak bir saat harcamaktan alabilirsiniz . Google’da hızlı bir şekilde "Git’te nasıl ___ 'var?", Geri kalanı genellikle bir Stackexchange cevabından verir.
Jon Bentley

1
@Gusdor ve ark., Bu cevabın bu soruya özel olduğunu - kıdemli programcıların öğrenmeye nasıl ilgi göstereceğini unutmayınız git. Açıkçası, diğer tüm kaynaklar (mükemmel git belgeleri, öğreticiler vb.) De geçerlidir. Gusdor, daha fazla bilgi edinmek istiyorsanız, google "git nesneleri" veya "git veri yapıları" nı hızlı bir şekilde bulabilirsiniz. Cevabınıza bazı linkler ekledim. Yaşlılardan birinden bunun hakkında bir kahverengi çuval seansı yapmasını isteyebilirsiniz. ;)
AnoE

14

Sizi Joel Spolsky'nin bu blog girişine yönlendirmek istiyorum .

Bu küçük geliştiricilerin hızlı bir şekilde toparlamalarını görmenizin nedeni, muhtemelen genel olarak sürüm kontrolünün nasıl çalıştığına ilişkin önceden belirlenmiş bir fikre sahip olmadıkları ya da en azından bunun derinlemesine gömülü bir zihinsel modeli olmadığı için olasıdır. Gibi onlar temiz bir sayfa ile geliyorlar. Daha kıdemli programcılarınız muhtemelen zaten bildikleri kavramları uygulamaya çalışıyor ve bunun sonucunda başarısız oluyorlar.

Buna ek olarak, söylemekten hoşlanmadığım kadarıyla; gerçekte kullanım kılavuzlarını kim okuyor? Genelde, temel kullanımı açıklamada çok kötüdürler. Sadece kılavuzdaki git taahhüt sayfasına bakın ve konsepte ayak uyduramayan birine yeni terimler ve ifadeler girdiğini düşünün. İyi bir tanıtım olmadan, Git'i orada ve sonra kullanmaktan büyük olasılıkla vazgeçtim.

Kişisel tavsiyem, komutları açıklamaya başlamak olacaktır:

  • git add <files>
  • git taahhüt
  • Git çekme
  • git it
  • git durumu

Mantıksal olarak birleştirme çatışmaları daha sonra açıklanmalıdır, çünkü insanlar kodun nasıl işleneceğini öğrendikten sonra bu kesinlikle ilk konunuz olacak.

Tipik olarak, insanların bir şeyler öğrenmeye daha fazla zaman harcayacağı durumlar ortaya çıkacaktır (geri dönüşler, etiketler, birleşme çatışmaları, dallar, yeniden asmalar, kancalar) ancak ihtiyaç duymadan bunları açıklamaya çalışmak, zorlanmaya uğrayan insanlara yardım etmeyecektir. Akış.

Sadece sarmak için: Kişisel tecrübelerime göre, bazı insanlar yeni teknikleri, kavramları veya araçları araştırmak için çok fazla zaman harcamazlar ve genellikle onları daha yavaş bir şekilde tanıtacağınız şeyleri toplamaya meyillidirler. Bu, onların kötü programcılar veya kötü insanlar oldukları anlamına gelmez, ancak genellikle daha dar bir beceri kümesine sahiplerdir.


1
"aslında kullanım kılavuzlarını kim okuyor?" Bunun en yeni genç geliştiricilerin makul bir beklentisi olabileceğini düşünüyorum, ancak geliştiricilerin zaman içinde öğrenmesi gereken becerilerden birinin belge okumak olduğunu düşünüyorum . Geliştirilmesi bir beceridir, çünkü belgelerin dili öğreticilerin diliyle ya da daha fazla sıradan teknik içerikle aynı değildir ve belgelerin farklı bölümlerinin birbirleriyle nasıl etkileşime girdiği her zaman açık değildir. Bu, "bir avuç" daha deneyimli "mühendis" ile ilgili bir sorun olmamalıdır.
Joshua Taylor

2
Blog giriş bağlantınız bana ilgisiz bir YouTube videosu verdi.
WGroleau

2
Ben bulmak git statusEğer kaydetti dört komutlara ek olarak, yaşamsal olmaya.
user949300,

1
@JoshuaTaylor El kitaplarının kötü olduğunu söylemek istemedim, aslında harikalar. Bununla birlikte, birisini erkeklere gitmeyi ve sadece söylemeyi; Hadi, öğrenmesi kolay, sadece man sayfalarını oku. Demek istediğim, dokümantasyonun harika olmadığı, çoğu yazdığı etki alanını bilen insanlar için kusursuz bir şekilde yazılmış ve kullanışlıdır, ancak genellikle temel kullanım arayan biri için değersizdir. EDIT : Ve bu son nokta görünüşte OP'nin sahip olduğu sorun.
Robzor

@ user949300 İyi yakalama, kesinlikle katılıyorum.
Robzor

11

SVN üzerindeki kaynak kontrolünün nasıl yapıldığını öğrendiyseniz, Git önemli bir yeniden düşünmedir. Orada geliştirdiğiniz alışkanlıkların birçoğu (ki bunlar SVN için en iyi yöntem olabilir) git kullanırken sizi yanlış yönlendirecektir. Bu öncelikle, git'in dallanma modelinin temelde çok farklı olması nedeniyle. Bu kaldıraç değil klasörleri şubeleri için ve buna doğrusal olmayan, daha iyi dağıtılmış kullanım durumlarını desteklemek için tasarlanmıştır çünkü yapmak da mümkündür. SVN alışkanlıklarını öğrenmek ve git nasıl kullanmanız gerektiğini anlamak biraz zaman alır .

Basit başlayın

Şube yönetimi için standart olarak Gitflow'u seçtiğinizi söylüyorsunuz. Bu beni en büyük hatan olarak vurur.

Gitflow'a Zararlı Olarak Kabul Edildiğini bildirmek için :

Kullanılan bu dalların tümü, GitFlow'u nasıl etkileşime girdiklerini açıklayan ayrıntılı bir karmaşık kurallar kümesine sahip olmaya zorlar. Bu kurallar, maddi olmayan tarih ile birlikte, GitFlow'un günlük kullanımını geliştiriciler için çok zorlaştırıyor.

Böyle karmaşık bir kurallar ağı kurduğunuzda ne olacağını tahmin edebiliyor musunuz? Bu doğru - insanlar hata yapar ve kazara kırırlar. GitFlow durumunda, bu her zaman olur. İşte kısa, hiçbir şekilde gözlemlediğim en yaygın hataların ayrıntılı bir listesi. Bunlar sürekli olarak, bazen her gün, çoğu kez diğer yazılım alanlarında çok yetenekli olan aynı geliştiriciler tarafından tekrar tekrar tekrar edilir.

Geliştiricileriniz muhtemelen bu standardın sırf karmaşıklığından dolayı bunalmışlardır. Şahsen bunun bir faydası olduğunu düşünmüyorum ve yukarıdaki makale aynı argümanı yapıyor. Ama bu ayrı bir tartışma. Nesnel olsa da, çok fazla manuel yönetim ile oldukça ağır bir standarttır ve çok fazla bilişsel çaba gerektirir.

Daha basit başlamalısın. Şu an bir dallanma standardı için endişelenmeyin. Onları ilk önce git kullanmaya alıştırmaya odaklanın . Başlamak için sadece birkaç operasyona ihtiyacınız var:

  • klon
  • Çek
  • şube
  • birleşmek
  • işlemek
  • it
  • nasıl .gitignoreçalıştığı hakkında bilgi
  • belki etiket

Evet, geçmişiniz ilk başta biraz dağınık olabilir. Tamamdır. Şu an bunun için endişelenme. Onları git kullanarak al .

Yavaş yavaş bilgiyi artırmak

Buradan, kademeli olarak biraz daha gelişmiş kullanım için onları eğitebilirsiniz.

  • Onlara epik stash komutunu öğret
  • Onlara, yaptıkları yerel taahhüdü atmak istediklerinde nasıl sıfırlanacaklarını öğretin
  • Onlara nasıl değiştirileceğini öğret
  • Gereksiz birleştirme taahhütlerini önlemek için onlara yeniden nasıl yeniden kazanılacağını öğretin
  • Onlara ittirmeden önce taahhütlerini düzenlemek için etkileşimli olarak yeniden nasıl kazanacaklarını öğretin.
  • Onlara herhangi bir karma, etiket veya daldan nasıl ödeme yapabileceklerini öğretin

Özellikle, kodlarını depoya girmelerine daha açık yollar gösterme fırsatlarından yararlandığınızdan emin olun, fakat aynı zamanda eğitim faaliyetlerinde ve neye sahip olduklarınızı da öğretin. İnsanların ne yapacaklarından emin olmadıklarında yaklaşabilecekleri bir ya da iki tanesine sahip olmak da çok yardımcı olacaktır. Slack gibi bir şeye sahipseniz, özel bir kanal oluşturun ve buradaki insanları soru sormaya ve cevaplamaya teşvik edin.

Sonra bir dallanma standardı seçin

Eğer hiç budala kullanarak yetkili şirketin en edindikten sonra, o zaman sen dallanma standartlarda bakabilirsiniz. Bir cepheden birini seçmek, birçok nedenden dolayı gerçekten kötü bir fikir

  • Standardın şirketin kullanım durumları için iyi çalışıp çalışmadığını size söyleyecek araç hakkında yeterli bilgiye sahip değiller.
  • Alternatif standartlar sunamayacaklar
  • Hem aracı hem de standardı aynı anda öğrenmek zorundalar
  • Bazıları seçtiğiniz standardı git kullanabilmelerinin tek yolu olarak kabul eder.
  • Standardın iyiden daha fazla zarar verdiği nadir kenar durumlarını tespit edemezler

Git iş akışını dağdan teslim etmemelisin. Ekibinizin üzerinde girdi olması ve iyi olup olmadığına dair size geri bildirim verebilmesi gerekiyor. Henüz temellerini anlamadılarsa bunu yapamazlar. Böyle derin bir bilgiye sahip olmak için her geliştiriciye ihtiyacınız yoktur , ancak kesinlikle gerçekten bir kaç kişiye ihtiyacınız var. Ve büyük çoğunluğun gite en azından yetkin olması için ihtiyacın var, bu yüzden rayların üzerinde bir şekilde kalacak kadar yeterli biliyorlar.

Gitflow'a ekibinizin göz önünde bulundurabileceği birkaç alternatif:

Onlara ve Gitflow'a bakın, kullanım durumlarınıza karşı tartın ve uygun olanı seçin.


2
Gitflow alternatiflerini belirtmek için +1. Tecrübelerime göre, acı çeken dükkanlar, ihtiyaçlarının gereğinden fazla ısrarcı olduğu ve / veya doğru kullanmadığı zaman, onu benimsemeye çalışan dev dükkanlardan geliyor. Daha basit bir model bu durumlarda neredeyse her zaman daha iyidir ve Git'in öğrenilmesini daha kolay hale getirme avantajına sahiptir.
Thunderforge

5
@Thunderforge "overkill" olarak adlandırdığımda aynı fikirde değilim, çünkü bu bir şekilde daha güçlü ya da esnek ya da bir şekilde avantajlı olduğunu gösteriyor. Gitflow'un avantajları olduğuna gerçekten inanmıyorum. Geriye doğru bir adım gibi görünüyor: SVN gibi diğer sürüm kontrol araçlarında gerekli olan karmaşık iş akışlarını almaya çalışmak ve Git'i aynı şekilde kullanmak. Git, ilk etapta daha basit iş akışlarını mümkün kılacak esnekliğe sahiptir. Bence temyiz başvurusunu yapmadan daha az düşünmek zorunda olduğu (kurallar ve talimatlar) yanılsaması verdiğidir. Ama amacın ele alındı. Teşekkür ederim.
jpmc26

4
Yaklaşımınıza katılıyorum. Çok uzun zaman önce SVN'den Git'e dönüştük. Diğer üyelere kullanmaları gereken komutların bir listesini, yardım etmemeleri gereken komutların bir listesini ve ASLA ASLA KULLANMAMASI GEREKENLERİN bir listesini (en azından yerel Git uzmanlarının yardımı olmadan) verdik. Git'in nasıl çalıştığına ve nasıl kullanılacağına dair temel bilgiler verdik. Birkaç ay boyunca ekibimiz yavaş yavaş buna alıştı. Şimdi sadece devlerin kafasını karıştıran zaman zaman sorunlarımız var.
Kyle A,

1
@Gusdor Sorunuz "şu anda geçiş yapıyor" diyor. Bu ne anlama geliyor? Ayrıca, satın almadığınız takdirde Gitflow'un başarılı olması pek mümkün değildir, çünkü avantajı olup olmadığını düşününce çok ağırdır.
jpmc26

2
@Gusdor Size tavsiyem, öğretme becerilerinizi geliştirmeniz gerekebilir. Bir yanlış anlama veya eksik bilginin kök nedenini belirlemede daha iyi olmanız gerekir. Birisinin mantığının yanlış gittiği yerde çalışabilmelisin. Belgeleme yazmak için , yalnızca bir bireyden uzaklaştırabilmekle kalmayacak, ayrıca insanların nerede karıştıracağını veya kullanmaya çalışırken neleri bırakacaklarını tahmin edebilmelisiniz .
jpmc26

11

Git terminolojisini ilk alırken stackoverflow'u çok faydalı buldum. Bu gibi sorular benim için çok yararlı oldu (çoğunlukla özlü olmaları nedeniyle) ve kullandığım ilk birkaç hafta boyunca onları sekmelerde açık tuttum. Belki de cevapları birkaç harfle koyu olarak yazdırabilirsin? Özellikle ilkideki diyagram.

“Git taahhüt” ve “git itme” arasındaki farklar nelerdir?

'Git pull' ve 'git fetch' arasındaki fark nedir?

Ayrıca, bagajın şaşırtıcı derecede yararlı olduğunu gösteren görsel bir sunum buldum, ancak bunu zaten SourceTree ile kapsıyorsunuz.

Bir kenara, bu bit muhtemelen bir yorumda yer almaktadır, ancak temsilcisi bulamıyorum: Ben soruda bahsedilen küçük danışmanlardan biriyim. Başlamadan önce, bir kaynak kontrol sisteminin ne olduğu hakkında bir fikrim vardı ve SVN'yi tam anlamıyla iki kez dürttüm, Gusdor bana hak ettiğimden daha fazla kredi verdi. Tüm ekibin kaliteli uzman Git eğitimi, oyuncakları ve oyun zamanı vardı. Sorun Gusdor'un talimatı ile değil. Umarım bunun için iyi bir alternatif çözüm vardır, bu yüzden zor yer imlerine ekleyebilir ve daha fazlasını öğrenebilirim.


Harika linkler. Veri Akışı resmini çalacağım!
Gusdor

9

Onlara bir kitap al

Dürüst olmak gerekirse, tarif ettiğiniz kampta kareye düştüm. SourceSafe ve ClearCase arka planından geldim. Başlangıçta, Pat patronumun birkaç kez yürüdüğü halde Git için bana tamamen güvenilmezdi.

Bana yardımcı olan, neler olup bittiğini açıkça tanımlayan bir kitaptı, ama daha da önemlisi, Git'in daha önce kullandığım tüm kaynak kontrol sistemlerinden temelde farklı olduğunu anladım. Şimdi Git'i başka seçeneklerden tercih ederim.

Maalesef, o sırada hangi kitabı okuduğumu hatırlayamıyorum, ancak hangisi için hangisini aldığınızı (ya da yönelttiğinden) nasıl farklı olduğuna ve nasıl farklı bir zihin kümesi gerektirdiğine odaklandığından emin olun.

Bir kitap önerisi için en iyi tahmin:

Scott Chacon tarafından Pro Git (istediğiniz için Amazon bağlantı ... istediğiniz kimseden satın: https://www.amazon.com/dp/1484200772/ref=cm_sw_r_cp_dp_T1_BNruzbBQ8G9A6 )

Not : Do not Git için bir referans kitabı satın. Bu hiç yardımcı olmayacak.


6
Pro Git kesinlikle IMO'ya gidecek. Şunları yapabilirsiniz Git web sitesinden ücretsiz olsun . Basılı kopya almak istemediğiniz sürece para ödemenize gerek yoktur.
Jon Bentley

4

Tecrübelerime göre bazı insanlar git'i anlamadan rahatlıkla kullanabilirler. Temel öğretici buluyorlar, temel komutları alıyorlar ve gitmeleri iyi. Muhtemelen genç danışmanların uygun olduğu yer burasıdır. Birkaç gün içinde gitmeyi gerçekten öğrenebileceğine inanmıyorum!

Diğer insanlar, yapamazlar, git'in ne yaptığını anlamalıdırlar ve bu daha çok zaman alır. Bu kategorideydim; .gitDizinin içeriğiyle oynamayı gerçekten faydalı buldum , o zaman benim için tıklamaya başladı. Ayrıca teknoloji liderimizle bire bir görüşmemiz de yardımcı oldu.

Bire bir öğreticiler yapabilirsin çünkü insanlar farklı öğreniyorlar ve farklı parçalar hakkında gerçekten kafa karıştırıyorlar, tek bir oturumda görmek ve çözmek daha kolay. Git'in dalları nasıl takip ettiğini anlamadığı gerçeği beni gerçekten rahatsız ediyorsa, onlara .gitrehberin içeriğini göster , vb.


4

gitNerede olduğumu (TFS'den) tanıtmakla uğraşıyorum, bu yüzden sorunuzun zamanında bana gelmesi, özellikle de konuyu ele geçirirken bir miktar geri adım attığım için.

In PEOPLEWARE , tüm kitabın temel tezleri ise:

İşimizin önemli sorun çok değildir teknolojik olarak sosyolojik doğada .

Bunu ortaya çıkardım çünkü bizim teknik bir problem değil. gitBirazcık geniş olsa da, çok aptal olmadıkça, muhtemelen sizin ya da kıdemli devlerimin gücünün ötesinde değildir *.

Teknik makineler değil, insanlar olarak, devs bakış açınıza bakalım:

Onlardan (büyük olasılıkla) ustalıklarına sahip oldukları bir kaynak kontrol sistemi kullanmayı bırakmalarını istiyorlar. Bir gituzmana kullanmayı bırakıp gitgitmesini istemek gibi bir svnşey değil mi? Git uzmanının sinirleneceğini ve muhtemelen çok fazla çaba harcamamış olduğunu düşünüyorum svnçünkü gitişler iyi ve bunun gerçekten de gerçekten zor olduğu bazı bölümleri var svn.

Belki onlar asmak yok - gençler buna daha iyi almış bir ihtimal bu yüzden svnve git^ o hendek onların şanstır.

Yaşlılar fırsat maliyetine karşı temkinli olsalar da - öğrenirlerse git, o zaman yapmazlar:

  • Öğrenme Tepkisi / Açısal / Swift / Blok Zinciri / Kotlin ( öğrenmeleri gerektiğini düşündükleri başka bir şey ).
  • Yapmak DIY / whittling / yelken / şiir / glockenspiel / gerçekte ne yapmak istiyorlarsa .
  • Çocukları / akrabaları / arkadaşları / önemli diğerleri ile vakit geçirmek.
  • Bu "büyük yeni şeyi" teslim etmek - son tarih, bütçe vb. Var. Muhtemelen endişeleniyorlar.

    “Yukarıdakilerin hepsini yapmam gerekiyor, neden git zaten kaynak kontrolümüz olduğunda kullanmak zorundayım?”

Onlara iyi oldukları bir şeyden, yeni olduğunuzda açıkça garip olan başka bir şeye geçmeleri ve nasıl yaptığınızı tam olarak yeniden düşünmeniz gereken nedenlere geçmeleri için hangi nedenleri verdiniz? gitÖzelliklerin yararlarını açıkladınız mı ?

Pull-istekleri? İnce taneli checkin'ler? Dağıtılmış kaynak? Çatallar?

Bu nedenleri getirdiler mi? Bunlar, merkezi bir kaynak denetimi zihin ayarındaysanız, yalnızca teknik değişiklikler değil, kültürel olarak da büyük ve yapısal değişimlerdir ve kültürü değiştirmenin ne kadar zor olduğunu biliyoruz.

Bu yüzden, temel olarak, geliştiricilerinizden yapmasını istediğinizi ve doğru nedenlerle olduğundan emin olmalarını istediğinizi düşünün. Sadece yapmak istiyorsanız, çünkü svnaptal ve yaşlı ve hiç kimse artık kullanmıyorsa iyi, ama sizin gibi düşünmeyen ve sadece kendi günleriyle uğraşmak isteyen başkalarına satmak zordur. Takımınıza ve projenize anlamlı yararlar sağlamanız gerekir. gitAcıya değer olduğunu kabul etmelerini sağlayabiliyorsanız, teknolojiyi öğrenmeleri konusunda endişelenmenize gerek yoktur, sadece kurduğunuz iş akışını kabul edin.

İyi şanslar.


* İnsanlara çoğu geliştiricinin teknik meseleler söz konusu olduğunda aptal olmadıklarını hatırlamalarını şiddetle tavsiye ederim. Başka bir açıklama yapılmadıkça bunu bir neden olarak atın.

^ ve daha fazla istihdam edilebilir, ki bu, özellikle de endüstrimizde yaygın olan yaşçılığa bakıldığında, yaşlıların çok fazla düşünemeyeceği bir şey.


3

Bunun daha az yazılım mühendisliği sorusu ve daha fazla psikoloji sorusu olduğunu düşünüyorum. Başvurmak istiyorum Algorithms to Live By: The Computer Science of Humand Decisions. İçinde yazar, keşif / istismar tespiti konusuna giriyor. İnsanlar genellikle bir keşif aşamasından ve sonra araştırdıklarını kullanma (kullanma) sürecinden geçer. Belirli bir aralıktaki bir şeyden en iyi şekilde yararlanmak için bunun neden böyle olduğuna dair bazı sağlam matematiksel teori var.

Bu aynı zamanda yaş ve tecrübeye de uzanıyor. İnsanlar kendi yaşamlarını bir aralık olarak görürler ve belli bir keşif evresinden sonra bilginizi kullanmaya başlamak en uygunudur. Yaşlı katılımcılara, sevdikleri veya ünlü bir aile üyesi ile tanışmak isteyip istemediklerini sordukları bir çalışmadan alıntı yaptılar. Genellikle aile üyesini seçerken, genç insanlar ünlü kişiyi daha fazla seçmişlerdir. Ancak, 20 yaşın altında olup olmadıklarına nasıl karar vereceklerini hayal etmeleri istendiğinde yaşlı insanlar rutin olarak ünlüleri de seçtiler. Bu, insanların zaten bildiklerini sömürmekten daha az keşif yaptıklarına inandıklarında sosyal ağlarını kurmayı bıraktıklarını göstermektedir.

Üst düzey mühendisleriniz muhtemelen daha eski, muhtemelen birkaç versiyon kontrol sisteminden geçtiler. SVNMuhtemelen şu ana kadar kullandıkları en iyisidir (en azından kullandığım eski sürüm sistemlerine bakıldığında, SVN hepsini yendi).

En uygun stratejileri SVN'den yararlanmak, çünkü araştırmasını yaptılar ve şimdi en iyi şekilde kullandıklarını keşfettiler.

Bu temel insan psikolojisi ve yüz binlerce yıllık evrimsel optimizasyona karşı savaşıyorsunuz.

Onlara, a) önlerinde ne kadar süre çalıştıklarını, kendilerini gördükleri aralığa göre farklı bir perspektiften düşünme düşüncesi hazırlayabilmeleri ve b) onlara neyin harika olduğunu ve ne düşündüklerini sormaları gerekecek. eksik SVN. Yüzlerce yararı ortaya koyabilirsiniz git, ancak daha önce SVNmuhtemelen 5 versiyon kontrol sistemi yaşadıklarından sonra neden en iyisi olduğu konusunda net bir fikirleri olacak . Bu tartışmanın zırhında piliç bulmanız ve sonra gitbu sorunları çözüp çözemeyeceğinizi görmeniz gerekiyor , o zaman kendilerini ikna etmiş olacaklar.


2

Git'i kullanmaları için onlara bir araç veya GUI vermeyin. Sadece işleri karıştıracak. Git, komut satırında çalışması için tasarlandı, bu yüzden muhtemelen öğrenildiği yer olmalı. Herhangi bir GUI, kendi koşullarına ve özelliklerine sahip olabilir, basit olanı sadık kalabilir.

Sonraki Git'in SVN'den daha iyi yaptığı bazı sorunlara bakmak olacaktır. Ekibinizin bunu öğrenmesini sağlamak için, neden daha iyi olduğunu görmek için onları motive etmeniz gerekir.

  • Ağa bağlı değilken taahhüt yapabilme
  • Kendi şubeleri ile yapabilecek ve oynayabilecek
  • Aralarında gönderilebilen ve hala birleştirme olan yamalar
  • acısız kiraz toplama.
  • değişiklikleri rebasing
  • git splice ile hata bulma

Son birkaç yılda SVN'nin yoluna devam ettiğinden eminim, ama bunlar acı dolu bir dünyaya yol açacak şeylerdi. Eğer devs bu yeni aracın sadece biraz süslü bir şey olmadığını, işlerinde sağlam avantajlara sahip olduğunu görüyorsa, geride kalması daha muhtemel olabilir.

Öğrenmesi yeni bir şey ve kafa karıştırıcı olabileceği kadar benzerlikler var, ama gerçekten 2017'de DCVS hemen hemen her dev için önemli bir beceridir.


1
+1 Diğerleri, kiraz toplama ve yeniden doğrama (benim için roket bilimi) gibi çok gelişmiş konuların komut satırıyla öğrenmek aslında çok anlamlı bir tavsiyedir. Git'i öğrenmenin tek yolu bu. Dreamweaver'ı kullanmadan önce HTML'yi öğreniyorsunuz, değil mi? Başlarken en yaygın komutlara bazı takma adlar oluşturabilirim. Örneğin Log komutu, bizans ve arcane olup, onlar için güzel bir tarih basan bir takma ad oluşturun.
Tulains Córdova

7
Ben kesinlikle katılmıyorum. DAG'ın bir görüşü, ne olduğunu anlamak için bugüne kadarki en önemli araçtır. Yalnızca bir GUI'den gelecek bir görünüm.
Esben Skov Pedersen

1
git log --graph --abbrev-commit --decorate --date=relative --all
Jeremy Fransız

1
git guive gitkana git paketi ile gel ve git'e başka bir şey gibi görünmesini sağlamaya çalışma. Özellikle gitk --alltüm dalları görmek ve mevcut şubeyi diğer komisyonlara veya benzeri şeylere işaret etmek üzere sıfırlamak için mükemmeldirler. Gitk'te "cherry-pick", bir sağ tıkladığınızda aldığınız seçeneklerden biridir. Komut satırı araçlarıyla aynı terminolojiyi kullanır.
Peter Cordes

3
@JeremyFrench ASCII sanatı, bir grafiği bir git repo kadar karmaşık olarak görüntülemenin çok kullanışlı bir yolu değildir.
jpmc26

2

Onlara endişelenmemelerini söyle

Git'te iş bir kez yapılsa, kaybetmek neredeyse imkansızdır. Kolayca kaybedebileceğiniz tek iş henüz taahhüt edilmemiş bir iştir.

Onlara nasıl git reflogçalıştığını gösterin . Nasıl kullanacaklarını bilmek zorunda değiller; sadece orada olduğunu bilmeleri gerekiyor, böylece bir şeyler ters giderse işlerini geri almak için yardım alabilirler.

O zaman bunlara basit bir kuralı uygulayın: Şüphe duyduğunuzda, taahhüt verin. Taahhüdü daha sonra her zaman geri alabilirler (uzaktan kumandadan bile!).

GUI kullanma

Bir GUI onlara daha hızlı bir başlangıç ​​sağlar, ancak Git'i asla gerçekten anlayamazlar. Dahası, bunun olduğunu gördük değil a Git GUI kullanılırken, taahhüt işleri "kaybetmek neredeyse imkansız". GUI'lerin birleştirme sırasında bir kontrol listesi sunma gibi korkunç şeyler yaptığını gördüm ve ardından kullanıcı bir öğenin işaretini kaldırırsa, bu dosyayı herhangi bir uyarı ve kayıt olmadan geçmişinden silin. Bir GUI Git komutunu öğrenmekten çok daha kötü.

Çift program kodu taahhüt eder

git add -ABunu takip eden öğrenme git commitçok zor olmamalı, ama özellikle uzaktan kumandayla birleştiğinde (veya yeniden oluştururken), biraz yardıma ihtiyaçları olacak. Herhangi birinin istediği zaman yardım isteyebileceğini açıkça belirtiniz. Komutları yazarken ve not alırken hazır olun. Zamanla, yardım almadan yaşayabilecekleri durum sayısını kademeli olarak arttıracaklar.

Git zaten güvenli

Yukarıda biri "oynamak için güvenli bir yer" hakkında konuştu. Ama Git olduğunu o güvenli bir yer. İşini kaybetmenin kolay olduğu iki normal günlük dava var:

  • Kabul edilmeyen kod
  • GUI kullanma

Erken ve sık sık işlemek ve onlar emin olun yok bir GUI yanlış yolunda ilerlemeye başlayan ve çok geçmeden onlar geçmişte diğer kaynak kontrol sistemleri bile daha fazla kendi koduyla Git güvenebilirsiniz olduğunu göreceksiniz.


1

Gitless'a bir göz atmanızı tavsiye ederim . Çok daha temel iş akışını kolaylaştıran Git üzerinden bir sarıcı (bir sahne alanı hakkında endişelenmenize gerek yok, dallar dosyaların kendi çalışma kopyalarını tutmak, daha basit kullanımları var git rebaseolan işlenir gl fuseişbirliği için altta yatan bir git depo korurken, vb) veya olağandışı bir şey yapmanız gerekiyorsa. Ayrıca, mesajlar biraz daha acemi dostu. Ve komutlar, herhangi bir sebepten ötürü üzerinde hatsız bir sistemi kullanmaları gerekiyorsa, git taşı olarak hareket edecek kadar yakındır.


1
Bu çok ilginç bir fikir, ama merak etmeliyim ki - Gitless gerçekten çok basit bırakılmazsa (ve ne?), O zaman öğrenmeye yapılan yatırım zaman kaybı olabilir. Gitmeyi uygun bir şekilde öğrenmek için biraz fazladan çaba harcamanız gerekebilir; bu da çok yönlü ve pazarlanabilir bir beceridir. Belki de Torvalds, Hamano ve ark. Gitless arayüzünü entegre etmek, sonra biz gerçekten bir şey olurdu.
Cody Gray

Git uyumlu bir porselenin kapsamına gireceğiniz kadar basit. Tüm olağan komutlar, farklı isimler içeren tek bir işlemdir ve hiçbir argümana gerek yoktur.
David Heyman,

0

Git'in komut satırının nasıl kullanılacağının temellerini belgelemeye çalıştım. Hem kafa karıştırıcıydı - hem kendime (Performans ve Kaynak Güvenliğini kullanma deneyimi olan) hem de eski "sadece ilgili klasörleri sıkıştırmak" paradigmasını tercih eden programcılar için. Opak bir aracın çalışma dizinimin içeriğini değiştirmesi ve genellikle çalışma dizinime belirli değişiklikleri dahil etmek için araç üzerinde tartışmak zorunda olması endişe verici bir durumdu.

Bunun yerine iki tür dolaylı kullanıyorum.

  • Şubelerimin görsel bir geçmişini ve komut satırı deyimlerini gizleyen bir GUI sağlamak için GitKraken'i kullanıyorum. GitKraken, "orijin" uzak deposu ile git'in ne düşündüğünü yerel çalışma dizini arasındaki etkileşimi ele alıyor.

  • Ayrıca, yerel çalışma dizinim olan Git'in düşündüğünden ayrı bir "gerçek" yerel çalışma dizini de tutuyorum. Bu iki çalışma dizinini manuel olarak senkronize ediyorum, bu da çalışma dizinimdeki herhangi bir değişikliğin benim istediğim şey olduğu konusunda çok daha rahat olmamı sağlıyor.


0

Bu çalışanların Git'i öğrenmelerine yardımcı olmak için yapabileceğim bir şey var mı?

Sorunun Git olduğundan ve başka bir şey olmadığından emin misin? Benim yorumumdan elde ettiğim şey, yönetimin, üst düzey katılımcılardan alım yapmadan bir şeyi değiştirmeye karar verdiği ve değişikliği yönlendirmesi için kendilerine küçük birini görevlendirdiği yönünde. Değişimin ne olduğu, başarısızlık için iyi bir başlangıç ​​noktası gibi görünüyor. Git karmaşıklığı bir sorun değil, sorun şu ki, ihtiyaç duymadıkları bir değişimin üzerlerinde zorlanması gerekiyor.

Bu yüzden, onlara Git'in nasıl öğretileceğine odaklanmayın, anahtar için bir avantaj göremedikleri sürece, ayaklarını sürükleyeceklerdir. Git'in şimdi sahip oldukları sorunlara nasıl bir çözüm olduğunu gösterin. Git'in ihtiyaç duymadıkları şeyleri nasıl sağlayamadıklarını değil, Git'in diğer insanlarla ilgili sorunlarına nasıl bir çözüm getirmediğini, Git'in şimdi savaştıkları sorunları nasıl çözdüklerini değil. O zaman onlara Git'i öğretmek sorun olmayacak.


0

Genellikle Git, şubelerde problem çözmek için bir şirkette kullanılıyor. Evet, dallarda Subversion'dan sonra daha iyidir, ancak sihir yapmaz.

Tecrübeli geliştiricilerin sahip olduğu birçok şirkette çalışması muhtemeldir.

  • Yönetim olarak oluşturulan şubeler birbiriyle çelişen talepler arasında karar vermeye istekli değil
  • Yapılandırma anahtarları yerine her müşteri için bir şube kullandık.
  • Yönetim, tüm müşterileri yazılımın aynı sürümüne yükseltmeye istekli olmadığından her müşteri için bir hata düzeltme şubesine sahip olmak zorunda kaldınız mı?
  • Vb.

Bu nedenle, bazıları bana bir aracın zihnimin dallanmasında iyi olduğunu söylediği anda bana söylediğini söyledi.

Yönetim, şirketin hangi yöne gideceğine karar vermek istemiyor ve işimin yazılımın 101 farklı sürümünü test etmek zorunda kalmamın yanı sıra, çalışmamı 101 farklı dalda birleştirmek zorunda kalmamı tercih ediyor.

Ayrıca, iki kişinin aynı dosya üzerinde aynı anda çalışacağı konsepti “iyi”, sadece iyi çalışan bir projeyi deneyimleyen biri için kabul edilemez, bu nedenle Git'i bu iş için bir araç olarak tanıtmak pek mümkün görünmüyor geliştiriciler senden hoşlanıyor.

Git'teki tarihe her baktığımda, kodun neden değiştiğini görmek çok zor, çünkü tarihin% 50 veya daha fazlası, mantıksal olarak hiçbir zaman halka açık olmamalıydı ve kod geliştiriciden ayrılır çıkmaz anlamsızlaşıyor. makinesi.

Ama bir yerde çalışmayı çok isterim:

  • Bir güven sunucusunda derlenip ünite test edilinceye kadar merkezi sisteme kod girilmez.
  • Kod incelemelerini izlemenin kolay bir yolu var
  • Ne zaman bir “get” yaparsam, kod her zaman derlenir ve çalışır
  • Değişikliklerimı başka biriyle yarışmak zorunda kalmadan ya da yapıyı kırıp kırmadığımı görmek için ofise saplanmak zorunda kalmadan nereye zorlayabilirim.

Bu yüzden asıl problemleri çözün ve Git, deneyimli geliştiricilerinizin satın alacağı çözümlerin bir parçasıysa, ancak Git'i sevmelerini beklemeyin, çünkü “sihirli birleşme” yapabilen harika bir oyuncak.

Bu nedenle, geliştiricinin yerel Git'ten merkezi Git'e itmesine izin veren herhangi bir yerde bunu yanlış yapıyor, kontrollü bir otomatik işlem geliştiricilerden gelen değişiklikleri alıyor ve test ettikten sonra vb. uzun vadeli faiz dışı şubeler vb.

“Çekme İsteği” iş akışını kullanan Kiln'in ( http://www.fogcreek.com/fogbugz/devhub ) veya GitHub’un, hatta “çekme isteği” iş akışını kullanmasının tecrübeli geliştiricileri mutlu edeceğini umuyorum; süreci.


1
Git'e geçme nedenleri şunlardır: 1. Topluluk tavsiyesi ve belgeler 2. Geniş takım uyumluluğu 3. Satıcı kilidi yok. Yeniden entegrasyondan önce kod incelemesini ve birim testini zorlayan bir takım boru hattı (büyük ölçüde jira> bitbucket> bamboo) geliştirdik. Kovboy olduğumuz fikrini sana ne verdi?
Gusdor

@Gusdor, çünkü GIT, merkezi kontrole sahip olmayan organizasyonlar için yaratıldı; örneğin kovboylar .....
Ian

Soru gövdesinden: "Biz merkezi bir Git Akışı modeli kullanıyoruz ..."
Gusdor

1
Bu ilginç bir nokta. İlk işe alındığımda VCS patlamaya başladı ve değiştirme konusunda fikrimi aldım. SVN'yi seçtim çünkü GIT'nin merkezi olarak kullanılamadığını varsaydım. Tabii ki pek çok adamımız SO
sordu

1
@Ian Bu nedenle, tüm İnternet kullanıcıları ABD askeri çıkarlarını ilerletmektedir, çünkü proto-İnternet aslında ordunun ordusu (DARPA) tarafından yaratılmıştır. Ayrıca cırt cırt kayışı ayakkabı giyen herkes NASA'dır, çünkü cırt cı sıfır uygulamalar için icat edilmiştir.
maple_shaft
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.