Git Taahhüdü: Bir Ustalık Sınıfı
Yayınlanan: 2023-02-26
Herhangi bir sürüm kontrol sisteminin temel gereksinimi, dosyaların farklı sürümlerini sizin için depolamaktır. Git'te bunu yapan komut commit . İşte bilmeniz gereken her şey.
Git'te Taahhüt Nedir?
Kesinleştirme Komutunu Yapılandırma
taahhüt Komutunu kullanma
Temel Bir Taahhüt
Dosyaları Otomatik Hazırlama
Aynı Anda Hazırlık ve Taahhüt
Farklı Bir Şubeye Taahhüt
Taahhütlerde Değişiklik Yapma
Bir Taahhütten Değişiklikleri Kaldırma
Tüm Taahhüdü Geri Alma
Git İsviçre Çakısı
Git'te Taahhüt Nedir?
Taahhütler, bir projenin geliştirme geçmişini oluşturan yaşam döngüsü boyunca yapılan anlık görüntüler dizisidir. Taahhütler, geçmişte farklı noktalarda olduğu gibi projenin bir versiyonunu çıkarmamıza izin veren şeydir. Bu neden önemli?
Sürüm kontrol sistemleri (VCS'ler) en yaygın olarak yazılım kaynak kodu ve geliştirme projelerinde kullanılır. Ancak, bir kitabın bölümlerini içeren Markdown dosyaları gibi herhangi bir metin dosyası koleksiyonuyla başarılı bir şekilde kullanılabilirler.
Proje dizinlerinizdeki her dosyanın VCS tarafından işlenmesini istemeyebilirsiniz, bu nedenle sürüm kontrollü olmasını istediğiniz dosyaları aday gösterebilmeniz gerekir. Bu onları projenin sürüm kontrol görünümüne ekler. Değişiklikler için izlenecekler.
Bunu başarmanın başka bir yolu da yoksayma listesi kullanmaktır. Bu, Git'e hangi dosyaları, dizinleri veya dosya türlerini her zaman yok sayması gerektiğini söyler.
Zamanla, projeye yeni dosyalar eklendikçe, bazılarının sürüm kontrol sistemine eklenmesi gerekecektir. Git'te bu, add komutu tarafından gerçekleştirilir. Aslında, add komutu, göreceğimiz gibi çifte hizmet yapar.
Projede yapılan değişikliklerin geçmişini korumak için, commit komutunu kullanarak Git'ten periyodik olarak projenin durumunun bir anlık görüntüsünü saklamasını isteyeceksiniz. İş akışımızda add komutunun yeniden göründüğü yer burasıdır. Git'e anlık görüntüye dahil etmek istediğimiz değişen dosyaları söylemek için add komutunu kullanıyoruz. Ardından, Git'e anlık görüntüyü oluşturmasını söylemek için commit kullanırız.
Kesinleştirme Komutunu Yapılandırma
Taahhütle ilgili bilgiler onunla birlikte saklanır, böylece taahhüdü kimin, ne zaman yaptığını ve taahhüdün ne içerdiğini bilmek her zaman mümkündür. Bu meta verilerin bir kısmı, taahhüt mesajı gibi, taahhüt zamanında yakalanır.
Geliştirme ekibi üyelerinin kimliğiyle ilgili meta veriler, aynı bilgilerin tekrar tekrar sağlanmasını önlemek için her kullanıcı tarafından yapılandırılabilir.
Bilgisayarınızdaki tüm depolar için adınızı global olarak ayarlamak için bu komutu kullanın.
git config --global user.name "Dave McKay"

Adınızın ayarlandığını doğrulamak için bu komutu kullanın.
git yapılandırma --global kullanıcı.adı

Belirli bir depoda farklı bir ad kullanmanız gerekiyorsa, projenin dizinine geçin ve --global seçeneği olmadan aynı komutu kullanın.
git yapılandırma user.name "McKay, David"
git yapılandırma kullanıcı.adı

Artık bu havuz için farklı bir varsayılan kullanıcı adımız var ve genel adımız diğer havuzlar için hala kullanılıyor.
Benzer bir şekilde, --global seçeneğini dahil ederek veya atlayarak, global olarak veya tek bir depo için bir e-posta adresi belirleyebiliriz.
git yapılandırma user.email "[email protected]"
git yapılandırma --global user.email "[email protected]"
git yapılandırma user.email
git yapılandırma --global user.email

Bu ayarlar yapılandırma dosyalarında tutulur. Global Git ayarları “~/.gitconfig” içinde tutulur ve havuza özel ayarlar deponun “.git/config” dosyasında tutulur.
commit , çalışırken bu değerlere başvurur ve bunları kullanır.
taahhüt Komutunu kullanma
commit komutunun temel kullanımı, indeks olarak bilinen hazırlama alanında bulunan dosyaları almak ve bunları deponun geçerli dalında bir taahhüt olarak depolamaktır.
Temel Bir Taahhüt
Dosyası değiştirilmiş bir projemiz var. Dosyayı hazır hale getirmek için add komutunu kullanacağız, ardından onu teslim edeceğiz. Değişikliklerin amacının kısa bir açıklamasını sağlayabilmek için -m (mesaj işleme) seçeneğini kullanıyoruz. Bu seçeneği kullanmazsak, taahhüt gerçekleşirken bizden bir taahhüt mesajı istenir. Komut satırına bir tane eklemek daha uygundur.
git jibber.c ekle
git commit -m "Güncellenmiş yardım metni"

git log komutunu kullanırsak, taahhütlerin ayrıntılarını kronolojik sırayla ve en son taahhüt listenin başında olacak şekilde gözden geçirebiliriz.
git günlüğü

Taahhütler less olarak görüntülenir.

Taahhüt, daha önce verdiğimiz ad ve e-posta adresi ile etiketlendi ve taahhüt mesajımız da kaydedildi.
Dosyaları Otomatik Hazırlama
Birçok dosyanın hazırlanması biraz zaman alabilir. Farklı bir yaklaşım, -A (tümü) seçeneğini add ile kullanmaktır.
Bu, değiştirilen tüm dosyaları, şu anda izlenmeyen tüm dosyalarla birlikte otomatik olarak aşamalandırır. İzlenmeyen dosyaların hazırlanması, ".gitignore" dosyanızdaki ayarlara uyar. Git, dahil edilmesini istemediğinizi söylediğiniz dosyaları hazırlamaz. Son olarak, artık çalışma dizininde olmayan dizindeki dosyalar dizinden kaldırılır .
Açıkçası, -A seçeneği aynı anda birçok şeyin olmasına neden olabilir. --dry-run seçeneği, değişiklikleri gerçekten gerçekleştirmeden size değişikliklerin bir önizlemesini sunar.
git add -A --dry-run

Örneğimizde, değiştirilmiş iki mevcut dosyayı ve iki yeni dosyayı hazırlayacaktır. Devam edelim ve commit komutunu kullanmadan önce -A seçeneğini kullanalım.
git ekle -A
git commit -m "Gelişmiş ayrıştırma"

Toplamda dört dosyanın değiştiğini görebiliriz. Bunlardan ikisi, listelenen yeni oluşturulan dosyalardır.
Aynı Anda Hazırlık ve Taahhüt
commit komutunun küçük harf -a (tümü) seçeneği vardır. Bu, dosyaların hazırlanmasını ve işlenmesini tek adımda gerçekleştirir.

commit -a seçeneği, değiştirilen mevcut dosyaları aşamalandırır ve taahhüt eder ve çalışma dizininizden kaldırılmışsa dosyaları dizinden kaldırır . İzlenmeyen dosyaları otomatik olarak hazırlamaz .
add komutu gibi, commit komutunun da --dry-run çalıştırmadan önce eylemlerini önizlemenizi sağlayan bir seçeneği vardır.
git commit -a --dry-run

Şimdi komutu uygulayalım.
git commit -a --dry-run

Dosyalar bizim için hazırlanır ve işlenir.
Farklı Bir Şubeye Taahhüt
Çalışma dizininizdeki dosyalarda bazı değişiklikler yaptıysanız ve doğru dalı teslim almadığınızı fark ettiyseniz, mevcut dalı etkilemeden değişikliklerinizi doğru dala kaydetmeniz gerekir.
Git'in farklı bir dala işlemek için bir komutu yoktur. Ancak bu durumu biraz Git becerisiyle düzeltebilirsiniz.
Değişikliklerin bir kopyasını oluşturmak için Git stash komutunu kullanacağız. Ardından doğru dalı kontrol edeceğiz ve değişiklikleri zuladan uygulayacağız. Saklanan değişiklikleri uygulamak için, apply komutu yerine pop komutunu kullanıyoruz. pop komutu, değişiklikleri uygular ve ayrıca bunları depodan kaldırır.
Depomuzun new-parser dalında bazı değişiklikler yaptık. classic-parser dalında yapılmış olmaları gerekirdi.
git zulası
git checkout klasik ayrıştırıcı
git zula pop

Artık bir commit gerçekleştirebilir ve bu dalı güncelleyebiliriz.
git commit -a -m "Ayrıştırıcı öncesi işlevler eklendi"

new-parser şubesine dönersek güncel olduğunu görebiliriz, yani değişiklikler çalışma dizininizden kaldırılmıştır ve deponuz ve dosyalarınız senkronize durumdadır.
git checkout yeni ayrıştırıcı
git durumu

İLİŞKİLİ: Ayrı Git Şubelerini Güncelleme ve Bakımını Yapma
Taahhütlerde Değişiklik Yapma
Taahhüt mesajınızı iyileştirmeniz gerekiyorsa (belki içinde bir yazım hatası fark ettiniz) veya taahhüde dahil edilmesi gereken bir dosyayı hazırlamayı unuttuysanız, işleri düzeltmek için --amend seçeneğini kullanabilirsiniz. Uyarı, bunun uzak bir depoya aktarılan taahhütlerde kullanılmaması gerektiğidir.
Son taahhüt mesajımızda, "fraze", "phrase" olmalıydı. git log kullanırsak bunu görebiliriz.

Bunu düzeltmek için --amend seçeneğini şu şekilde kullanacağız.
git commit --amend -m "Optimize edilmiş kelime öbeği tanımlaması"

git log bir kez daha kullanırsak, eski commit'in düzeltilmiş commit mesajı ile yenisi ile değiştirildiğini görebiliriz.

Hazırlamayı unuttuğumuz bir dosyayı eklemek istiyorsak, o dosyayı bir önceki işlemin parçası olarak görünecek şekilde teslim edebiliriz.
Dosyayı hazırlamak için add kullanacağız, ardından --amend seçeneğiyle bir taahhütte bulunacağız. --no-edit seçeneği, yeni bir taahhüt mesajı vermemize gerek olmadığı anlamına gelir. Önceki taahhüt mesajı korunur.
git jibber.c ekle
git commit --amend --no-edit

Bir Taahhütten Değişiklikleri Kaldırma
İstemediğiniz bir dosyayı yanlışlıkla hazırladıysanız ve taahhüt ettiyseniz, reset komutunu kullanarak bu dosyayı taahhütten kaldırabilirsiniz. Taahhüdü hazırlama alanına veya dizine geri sıfırlayacağız. Ardından dosyayı kaldıracağız ve geri kalan dosyaları yeniden işleyeceğiz.
Hazırlama alanına son taahhüdü sıfırlamak için reset --soft komutunu kullanırız. HEAD~ "proje taahhüt zaman çizelgesinin HEAD'inin arkasındaki taahhüt" veya İngilizce'de "son taahhüt" için kısaltmadır.
git reset --soft HEAD~

Dahil edilmemesi gereken dosyayı kaldırmak için reset --mixed komutunu kullanırız. Bu, bu değişiklikleri tekrar çalışma dizinine sıfırlar ve değiştirilen dosyayı aşamalandırılmamış, kaydedilmemiş bir dosya olarak yeniden oluşturur.
git reset --mixed jibber.c

Dizinde kalan diğer dosyaları işlememiz gerekiyor.
git commit -m "Deneysel ince ayarlar"

Orijinal taahhütte bulunan diğer iki dosya bizim için yeniden taahhüt edildi.
İLİŞKİLİ: Git İşlemlerini Düzeltme, Düzenleme veya Geri Alma (Git Geçmişini Değiştirme)
Tüm Taahhüdü Geri Alma
Bazen bir taahhüdün tamamını geri almak yapılacak en kolay şeydir. Çalışma dizininizi ve deponuzu, siz taahhüt etmeden önceki durumuna geri getirir.
Taahhüdün karma referans kimliğini kullanmamız gerekiyor. Bunu git log kullanarak bulabiliriz:

Bu referansı kopyalayın ve revert komutunda kullanın:
git geri döndürme e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8

Bu, bir geri alma mesajını düzenleyebilmeniz için varsayılan düzenleyicinizi açacaktır. Sizin için girilen varsayılan bir mesaj var. Bunu kullanabilir veya beğeninize göre düzenleyebilirsiniz.

Geri dönüş mesajınızdan memnun olduğunuzda, dosyayı kaydedin ve editörden çıkın. Nano'da bunu "Ctrl+O" ve "Ctrl+X" ile yaparsınız.

git log bir kez daha kullanarak, geri alınan commit'teki değişiklikleri geri alan yeni bir commit eklendiğini görebiliriz.
Git İsviçre Çakısı
Açıkçası, commit en önemli Git komutlarından biridir. Çok şey yapabilir, bu yüzden öğrenecek çok şey var. Daha az kullanılan özellikleriyle uğraşmak, iyi harcanan zamandır. Bir hatayı düzeltmeniz gerektiğinde - hemen şimdi - önceden hazırlandığınız için mutlu olacaksınız.
İLİŞKİLİ: Git birleştirme nasıl kullanılır?
