İşte geçen hafta kullandığım Git komutları ve ne yaptıkları.

Resim kredisi: GitHub Octodex

Çoğu yeniliğin yanı sıra, Git komutları için StackOverflow'u aramaya başladım, daha sonra kopyaları yapıştırarak, ne yaptıklarını gerçekten anlamadım.

Resim kredisi: XKCD

Düşünüyorum ki, “En yaygın Git komutlarının bir listesi olmasının yanında neden yararlı olduklarına dair bir açıklama olsaydı iyi olmaz mıydı?” Diye düşündüğümü hatırlıyorum.

Eh, burada yıllar sonra böyle bir liste derlemek ve orta-ileri geliştiricilerin bile yararlı bulması gereken en iyi uygulamaları ortaya koyuyorum.

İşleri pratik yapmak için, bu listeyi geçen hafta kullandığım gerçek Git komutlarından alıyorum.

Hemen hemen her geliştirici Git ve büyük olasılıkla GitHub kullanır. Ancak ortalama bir geliştirici, muhtemelen bu üç komutu yalnızca zamanın% 99'unu kullanıyor:

git add --all
git taahhüt -am ""
git kökeni ana itin

Tek kişilik bir ekip, bir hackathon veya atılan bir uygulama üzerinde çalışırken her şey yolunda ve güzel, ancak kararlılık ve bakım öncelik kazanmaya başladığında, taahhütleri silme, bir dallanma stratejisine sadık kalma ve yazma tutarlı taahhüt mesajları önemli hale gelir.

Yeni başlayanların Git ile neyin mümkün olduğunu anlamalarını kolaylaştırmak için yaygın olarak kullanılan komutların listesini kullanmaya başlayacağım, ardından daha gelişmiş işlevlere ve en iyi uygulamalara geçeceğim.

Düzenli olarak kullanılan komutlar

Git'i bir depoda (repo) başlatmak için, aşağıdaki komutu yazmanız yeterlidir. Git'i başlatmazsanız, bu repo içindeki diğer Git komutlarını çalıştıramazsınız.

Git Init

GitHub kullanıyorsanız ve çevrimiçi ortamda depolanan GitHub deposuna kod gönderiyorsanız, uzak bir repo kullanıyorsunuz demektir. Bu uzak reponun varsayılan adı (takma ad olarak da bilinir) orijinlidir. Bir projeyi Github'dan kopyaladıysanız, kökeni zaten var. Bu kaynağı, uzak reponun URL'sini listeleyen git remote -v komutuyla görüntüleyebilirsiniz.

Kendi Git deponuzu başlattıysanız ve onu GitHub deposu ile ilişkilendirmek istiyorsanız, GitHub'da bir tane oluşturmanız, sağlanan URL'yi kopyalamanız ve Git uzaktan kumandası kökenli GitHub tarafından sağlanan URL ile birlikte kullanmalısınız. “” yerine. Oradan, uzak deponuza ekleyebilir, taahhüt edebilir ve itebilirsiniz.

Sonuncusu uzak depoyu değiştirmeniz gerektiğinde kullanılır. Başka birinden bir repo kopyaladığınızı ve uzak depoyu orijinal sahibinden kendi GitHub hesabınızla değiştirmek istediğinizi varsayalım. Uzak repoyu değiştirmek yerine set-url kullanımı dışında git remote add origin ile aynı işlemi uygulayın.

git uzak -v
git uzaktan kumanda orijini 
git uzak set-url kökeni 

Bir repoyu kopyalamanın en yaygın yolu git klonunu ve ardından reponun URL'sini kullanmaktır.

Uzak deponun, repoyu klonladığınız hesaba bağlanacağını unutmayın. Bu nedenle, bir başkasına ait olan bir repoyu klonladıysanız, yukarıdaki komutları kullanarak orijini değiştirinceye kadar GitHub'a gidemezsiniz.

git klonu 

Dalları kullanarak kendinizi hızlı bir şekilde bulacaksınız. Dalların ne olduğunu anlamadıysanız, daha derinlemesine olan başka dersler var ve devam etmeden önce bunları okumalısınız (işte bir tane).

Git branch komutu yerel makinenizdeki tüm dalları listeler. Yeni bir şube oluşturmak istiyorsanız git dalını , dalın adını temsil eden ile “ana” gibi kullanabilirsiniz.

Git checkout komutu var olan bir şubeye geçer. Ayrıca, yeni bir şube oluşturmak ve hemen ona geçmek için git checkout -b komutunu kullanabilirsiniz. Çoğu kişi bunu ayrı dal ve ödeme komutları yerine kullanır.

git şubesi
git dalı 
git ödeme 
git ödeme -b 

Bir dalda bir sürü değişiklik yaptıysanız, buna "gelişme" diyelim ve bu şubeyi ana şubenize yeniden birleştirmek istiyorsanız git git birleştirme komutunu kullanın. Ana şubeyi kontrol etmek isteyip ardından geliştirmeyi ana şubeye birleştirmek için git merge develop komutunu çalıştırmak isteyeceksiniz.

git birleştirme 

Birden fazla kişiyle çalışıyorsanız, kendinizi GitHub'ta bir reponun güncellendiği bir konumda bulacaksınız, ancak değişiklikleri yerel olarak yapamazsınız. Bu durumda, uzak şubeden yapılan en son değişiklikleri çekmek için git çekme kökeni kullanabilirsiniz.

git çekme kaynağı 

Hangi dosyaların değiştirildiğini ve nelerin izlendiğini görmek istiyorsanız git durumunu kullanabilirsiniz. Her dosyanın ne kadarının değiştirildiğini görmek istiyorsanız, her dosyada değişen satır sayısını görmek için git diff'i kullanabilirsiniz.

git durumu
git diff --stat

Gelişmiş komutlar ve en iyi uygulamalar

Yakında, taahhütlerinizin güzel görünmesini ve tutarlı kalmasını istediğiniz bir noktaya ulaşırsınız. Ayrıca, taahhütlerinizin anlaşılmasını kolaylaştırmak veya kazara kırılma değişikliklerini geri almak için taahhüt geçmişinizle uğraşmanız gerekebilir.

Git log komutu, taahhüt geçmişini görmenizi sağlar. Bunu, taahhütlerinin geçmişini görmek için kullanmak isteyeceksin.

Taahhütleriniz, rastgele sayı ve harf serileri olan mesajlar ve bir karma değer ile gelecek. Örnek bir karma şöyle görünebilir: c3d882aa1aa4e3d5f18b3890132670fbeac912f7

Git günlüğü

Diyelim ki uygulamanızı bozan bir şey bastırdınız. Düzeltmek ve yeni bir şey itmek yerine, sadece bir taahhüt geri dönüp tekrar deneyin.

Zamanda geriye gitmek ve uygulamanızı önceki bir işlemden teslim almak istiyorsanız, karma numarasını şube adı olarak kullanarak doğrudan yapabilirsiniz. Bu, uygulamanızı geçerli sürümden çıkarır (çünkü geçerli sürüm yerine geçmiş bir kaydı düzenliyorsunuzdur).

git ödeme c3d88eaa1aa4e4d5f

Ardından, bu tarihi daldan değişiklikler yaparsanız ve tekrar zorlamak istiyorsanız, zorla bir zorlama yapmanız gerekir.

Dikkat: Zorla itme tehlikelidir ve yalnızca kesinlikle yapmanız gerektiğinde yapılmalıdır. Uygulamanızın geçmişinin üzerine yazacak ve sonra gelenleri kaybedeceksiniz.

git push -f kökenli master

Diğer zamanlarda her şeyi bir taahhütte tutmak pratik değildir. Belki de potansiyel olarak riskli bir şey denemeden önce ilerlemenizi korumak istersiniz, ya da belki de bir hata yaptınız ve kendinizi sürüm geçmişinizde bir hata yaşamadan utandırmak istiyorsunuz. Bunun için git rebase var.

Diyelim ki yerel tarihinizde ileri ve geri gittiğiniz 4 Git (GitHub'a gönderilmemiştir) komisyonunuz var. Taahhütlerin özensiz ve kararsız görünüyor. Tüm bu taahhütleri tek, kısa ve öz bir taahhütte birleştirmek için rebase'i kullanabilirsiniz.

git rebase -i KAFASI ~ 4

Yukarıdaki komut, bilgisayarınızın varsayılan düzenleyicisini (başka bir şeyi ayarlamadıysanız Vim'dir) açıp, taahhütlerinizi nasıl değiştirebileceğiniz konusunda çeşitli seçenekler sunar. Aşağıdaki kod gibi bir şey görünecek:

130deo9 en eski taahhüt mesajı seç
4209fei ikinci en eski taahhüt mesajını al
4390 gne üçüncü en eski taahhüt mesajı seç
bmo0dne seç yeni mesaj gönder

Bunları birleştirmek için, taahhütleri düzeltmek ve taahhüt mesajlarını atmak için “seçim” seçeneğini “düzeltme” (kodun altındaki belgelerde belirtildiği gibi) olarak değiştirmemiz gerekiyor. Vim'de, metni düzenleyebilmeniz için “a” veya “i” ye basmanız ve kaydetmek ve çıkmak için kaçış tuşunu ve ardından “shift + z + z” yazmanız gerektiğini unutmayın. Bana nedenini sorma, sadece öyle.

130deo9 en eski taahhüt mesajı seç
fixup 4209fei ikinci en eski taahhüt mesajı
düzeltme 4390gne üçüncü en eski taahhüt mesajı
düzeltme bmo0dne en yeni taahhüt mesajı

Bu, tüm taahhütlerinizi “en eski taahhüt mesajı” mesajı ile birleştirecektir.

Bir sonraki adım, taahhüt mesajınızı yeniden adlandırmaktır. Bu tamamen bir fikir meselesidir ancak tutarlı bir modeli takip ettiğiniz sürece, yaptığınız her şey yolunda. Angular.js için Google tarafından belirtilen taahhüt kurallarını kullanmanızı öneririm.

Kabul mesajını değiştirmek için değişiklik bayrağını kullanın.

git taahhüt - değişiklik

Bu aynı zamanda vim açacaktır ve metin düzenleme ve kaydetme kuralları yukarıdaki ile aynıdır. İyi bir taahhüt mesajı örneği vermek için, kılavuzdaki kuralları takip edenlerden biri:

feat: ödemeler sayfasına şerit ödeme butonu ekle
- şerit ödeme butonu ekle
- ödeme için testler yazmak

Kılavuzda listelenen türlere uymamanın bir avantajı, değişiklik günlüklerini yazmayı kolaylaştırmasıdır. Ayrıca, sorunları referans alan altbilgiye (yine kılavuzda belirtilen) bilgi de ekleyebilirsiniz.

Not: Eğer bir projede işbirliği yapıyorsanız ve kodunuzu GitHub'a ilettiyseniz, taahhütlerinizi yeniden oluşturmaktan ve ezmekten kaçınmalısınız. İnsanların burunları altındaki versiyon geçmişini değiştirmeye başlarsanız, takip etmesi zor olan böceklerle herkesin hayatını zorlaştırırsınız.

Git'te neredeyse sonsuz sayıda olası komut vardır, ancak bu komutlar muhtemelen ilk birkaç yıllık programınız için bilmeniz gerekenlerdir.

Sam Corcos, 3D baskı topoğrafik haritalarının en sezgisel platformu olan Sightline Maps'in kurucu ortağı ve eş kurucusudur.