Git Taahhüdü: Bir Ustalık Sınıfı

Yayınlanan: 2023-02-26
Mavi bir arka planda bir Linux komut istemini gösteren dizüstü bilgisayar.
fatmawati achmad zaenuri/Shutterstock.com
Git commit komutu, çalışma dizininizdeki değişikliklerin kopyalarını Git deponuzda depolar. Ancak mevcut taahhütleri değiştirmek ve taahhütleri geri almak için de kullanılabilir.

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.

İçindekiler

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" 

Genel Git kullanıcı adını ayarlama

Adınızın ayarlandığını doğrulamak için bu komutu kullanın.

 git yapılandırma --global kullanıcı.adı 

Git genel kullanıcı adını kontrol etme

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ı 

Havuza özgü bir Git kullanıcı adı ayarlama

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 

Genel ve depoya özgü Git varsayılan kullanıcı e-posta adreslerini ayarlama

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" 

Tek bir dosyayı hazırlama ve taahhüt etme

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üğü 

Git deposu günlüğünü kontrol etme

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

Git günlüğünün en üstündeki en son işlem

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 

Hazırlanacak ve hazırlanacak dosyaları önizlemek için --dry-run kullanma

Ö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" 

Add -A seçeneğini kullandıktan sonra değiştirilen ve yeni oluşturulan dosyaların işlenmesi

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 

Değişiklikleri gerçekleştirmeden önizlemek için taahhüt -a seçeneğini kullanma

Şimdi komutu uygulayalım.

 git commit -a --dry-run 

Taahhüdü kullanma -a seçeneği tek adımda hazırlama ve taahhüt etme

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 

Değişiklikleri saklamak, bir dalı kontrol etmek ve değişiklikleri saklamaktan uygulamak

Artık bir commit gerçekleştirebilir ve bu dalı güncelleyebiliriz.

 git commit -a -m "Ayrıştırıcı öncesi işlevler eklendi" 

Zuladan alınan değişiklikleri gerçekleştirme

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 

Güncel olduğundan emin olmak için bir şubenin durumunu kontrol etme

İ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.

Bir türün vurgulandığı Git günlüğü

Bunu düzeltmek için --amend seçeneğini şu şekilde kullanacağız.

 git commit --amend -m "Optimize edilmiş kelime öbeği tanımlaması" 

Bir kesinleştirme mesajını düzeltmek için commit --amend seçeneğini kullanma

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

Düzeltilmiş taahhüt mesajını gösteren Git günlüğü

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 dosyayı önceki işleme kaydetme

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~ 

Son taahhüdün hazırlama alanına geri gönderilmesi

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 

Git hazırlama alanından bir dosyayı kaldırma

Dizinde kalan diğer dosyaları işlememiz gerekiyor.

 git commit -m "Deneysel ince ayarlar" 

Hazırlama alanında kalan dosyaların işlenmesi

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:

Kayıt tanımlayıcısının vurgulandığı Git günlüğü

Bu referansı kopyalayın ve revert komutunda kullanın:

 git geri döndürme e5bd4560aef8164c6ca9d6d4620b9db7f66aecc8 

Taahhüt kimliği tarafından tanımlanan bir taahhüdü geri alma

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ı, varsayılan mesaj vurgulanmış olarak düzenleme

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.

Tamamlanan geri alma işlemi, tüm taahhüdü geri alıyor

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?