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?