
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 şudur: commit
. İşte bilmeniz gereken her şey.
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
emretmek. Aslında, add
göreceğimiz gibi, komut çifte hizmet yapar.
Projede yapılan değişikliklerin geçmişini tutmak için, Git’ten periyodik olarak projenin durumunun bir anlık görüntüsünü depolamasını isteyeceksiniz. commit
emretmek. Burası add
komutu iş akışımızda yeniden belirir. biz kullanıyoruz add
Git’e hangisi olduğunu söyleme komutu değişti anlık görüntüye dahil etmek istediğimiz dosyalar. Sonra kullanırız commit
Git’e anlık görüntüyü oluşturmasını söylemek için.
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 config --global user.name
Belirli bir depoda farklı bir ad kullanmanız gerekiyorsa, projenin dizinine geçin ve aynı komutu --global
seçenek.
git config user.name "McKay, David"
git config user.name
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, bir e-posta adresini global olarak veya tek bir havuz için ayarlayarak veya atlayarak ayarlayabiliriz. --global
seçenek.
git config user.email "dave@phony-domain.com"
git config --global user.email "dave@fake-domain.com"
git config user.email
git config --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.
bu commit
komut, çalışırken bu değerleri referans alır ve kullanır.
taahhüt Komutunu kullanma
Temel kullanımı commit
komut, dizin 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. biz kullanacağız add
dosyayı hazırlamak için komut verin, ardından kesinleştirin. biz kullanıyoruz -m
(mesaj taahhüt) seçeneği, böylece değişikliklerin amacının kısa bir açıklamasını sağlayabiliriz. 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 add jibber.c
git commit -m "Updated help text"
Eğer kullanırsak git log
komutu, taahhütlerin ayrıntılarını kronolojik sırayla, en son taahhüt listenin başında olacak şekilde gözden geçirebiliriz.
git log
Taahhütler şurada görüntülenir: less
.
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. kullanmak farklı bir yaklaşımdır. -A
(tümü) seçeneği ile add
.
Bu otomatik olarak tüm aşamaları değiştirilmiş şu anda tüm dosyalar ile birlikte izlenmemiş Dosyalar. İzlenmeyen dosyaların hazırlanması, “.gitignore” dosyanızdaki ayarlara uygundur. Git, dahil edilmesini istemediğinizi söylediğiniz dosyaları hazırlamaz. Son olarak, artık çalışma dizininde olmayan dizindeki dosyalar kaldırıldı dizinden.
Açıkça, -A
seçenek bir anda çok şeyin olmasına neden olabilir. bu --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 kullanalım -A
seçeneği kullanmadan önce commit
emretmek.
git add -A
git commit -m "Enhanced parsing"
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
bu commit
komutun küçük harfi vardır -a
(tümü) seçeneği. Bu, dosyaların hazırlanmasını ve işlenmesini tek adımda gerçekleştirir.
bu commit -a
seçenek aşamaları ve taahhütler değiştirildi mevcut dosyalar ve kaldırır çalışma dizininizden kaldırılmışlarsa dizindeki dosyaları. BT yapmaz izlenmeyen dosyaları otomatik olarak hazırlar.
Gibi add
komutu, commit komutunun bir --dry-run
yürütmeden önce eylemlerini önizlemenizi sağlayan seçenek.
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.
Git’i kullanacağız stash
değişikliklerin bir kopyasını yapmak için komut. Ardından doğru dalı kontrol edeceğiz ve değişiklikleri zuladan uygulayacağız. Saklanan değişiklikleri uygulamak için kullanıyoruz pop
komut yerine apply
emretmek. bu pop
komutu, değişiklikleri uygular ve ayrıca onları zuladan kaldırır.
Depomuzda bazı değişiklikler yaptık. new-parser
dal. Onlar yapılmış olmalıdır classic-parser
dal.
git stash
git checkout classic-parser
git stash pop
Şimdi bir gerçekleştirebiliriz commit
ve bu dalı güncelleyin.
git commit -a -m "Added pre-parser functions"
geri dönersek new-parser
şubesinin güncel olduğunu görebiliriz, bu da değişikliklerin çalışma dizininizden kaldırıldığı ve deponuz ile dosyalarınız senkronize olduğu anlamına gelir.
git checkout new-parser
git status
İLGİLİ: Ayrı Git Dalları Nasıl Güncellenir ve Korunur?
Taahhütlerde Değişiklik Yapma
Taahhüt mesajınızı iyileştirmeniz gerekiyorsa (belki bir yazım hatası fark ettiniz) veya taahhüde dahil edilmesi gereken bir dosyayı hazırlamayı unuttuysanız, --amend
işleri düzeltme seçeneği. Uyarı, bunun uzak bir depoya aktarılan taahhütlerde kullanılmaması gerektiğidir.
Son taahhüt mesajımızda, “fraze”, “phrase” olmalıydı. eğer kullanırsak git log
bunu görebiliriz.
Bunu düzeltmek için, --amend
bunun gibi bir seçenek.
git commit --amend -m "Optimized phrase identification"
eğer kullanırsak git log
bir kez daha, eski taahhüdün düzeltilmiş taahhüt mesajıyla yenisiyle 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.
kullanacağız add
dosyayı hazırlamak için, ardından ile bir taahhütte bulunun --amend
seçenek. bu --no-edit
seçeneği, yeni bir taahhüt mesajı vermemize gerek olmadığı anlamına gelir. Önceki taahhüt mesajı korunur.
git add jibber.c
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 işlediyseniz, bu dosyayı reset
emretmek. 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 yapılan son taahhüdü sıfırlamak için reset --soft
emretmek. 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
emretmek. 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 "Experimental tweaks"
Orijinal taahhütte bulunan diğer iki dosya bizim için yeniden taahhüt edildi.
İLGİ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 kullanarak bulabiliriz git log
:
Bu referansı kopyalayın ve revert
emretmek:
git revert 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.
kullanma git log
bir kez daha, geri alınan taahhüdün değişikliklerini geri alan yeni bir taahhüdün eklendiğini görebiliriz.
Git İsviçre Çakısı
Açıkça, 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.
İLGİLİ: Git birleştirme nasıl kullanılır?