Git'te Commit Squashing'de Ustalaşmak:
Bir proje üzerinde çalışırken, taahhüt geçmişiniz çok sayıda küçük taahhütle darmadağın olabilir. Bu küçük taahhütler, değişikliklerin gözden geçirilmesini ve proje geçmişinin anlaşılmasını zorlaştırabilir.
Git'te, son N taahhütlerinizi tek bir taahhütte sıkıştırarak daha temiz ve daha yönetilebilir bir geçmiş oluşturabilirsiniz. Bu kılavuz, bunu başarmak için gereken adımlarda size yol gösterecek ve sürüm kontrolünüzü daha verimli hale getirecektir.
Emretmek | Tanım |
---|---|
git rebase -i HEAD~N | Son N işlemin etkileşimli bir yeniden temelini başlatır. |
pick | Etkileşimli bir yeniden yapılandırma sırasında taahhüdü olduğu gibi korur. |
squash | Etkileşimli bir yeniden yapılandırma sırasında bir taahhüdü öncekiyle birleştirir. |
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo | Yeniden yapılanma yapılacaklar listesindeki ilk taahhüt dışındaki tüm işlemler için 'seçim'i otomatik olarak 'squash' ile değiştirir. |
git rebase --continue | Çatışmaları çözdükten sonra yeniden temellendirme sürecine devam eder. |
git rebase --abort | Yeniden temellendirme işlemini iptal eder ve yeniden temellendirme başlamadan önceki duruma geri döner. |
HEAD~N | Geçerli HEAD'den önceki IN taahhüt yerini ifade eder. |
Git Commit Squashing'i Anlamak
İlk komut dosyası şunu kullanır: son N işlemin etkileşimli bir yeniden temelini başlatmak için. İnteraktif ekranda, birleştirmek istediğiniz taahhütler için 'seçim'i 'squash' ile değiştirirsiniz. Bu süreç, birden fazla küçük işlemin tek bir işlemde birleştirilmesine yardımcı olarak işlem geçmişinizi daha temiz ve yönetilmesi daha kolay hale getirir. Düzenledikten sonra düzenleyiciyi kaydedip kapatın. Anlaşmazlıklar varsa bunları çözer ve devam edersiniz. .
İkinci betik, ezme işlemini otomatikleştiren bir Bash betiğidir. Bir dizi taahhüt (N) sağlanıp sağlanmadığını kontrol ederek başlar. Sonra çalışır ve kullanır rebase yapılacaklar listesindeki ilk taahhüt dışındaki herkes için 'seçim'i 'squash' ile değiştirmek. Bu, dosyayı manuel olarak düzenlemeden birden fazla işlemin ezilmesini kolaylaştırır. Son olarak rebase işlemine şu şekilde devam eder: , gerekli tüm çakışma çözümlerini otomatik olarak ele alır.
Git Rebase'i Kullanarak Birden Fazla Taahhüdü Bir Hale Getirin
Git Komutları
git rebase -i HEAD~N
# Replace N with the number of commits you want to squash
# In the interactive rebase screen that appears, change 'pick' to 'squash' (or 's') for the commits you want to squash
# Save and close the editor
# Edit the commit message if needed, then save and close the editor again
# If there are conflicts, resolve them and then run
git rebase --continue
# Your last N commits are now squashed into one commit
Bir Kabuk Komut Dosyasıyla Taahhüt Squashing'i Otomatikleştirme
Bash Komut Dosyası
#!/bin/bash
if [ -z "$1" ]
then
echo "Usage: ./squash_commits.sh <N>"
exit 1
fi
git rebase -i HEAD~$1
# Automatically replace 'pick' with 'squash' for all but the first commit
sed -i '1!s/pick/squash/' .git/rebase-merge/git-rebase-todo
git rebase --continue
Gelişmiş Git Ezme Teknikleri
Git'te taahhütleri ezmenin bir diğer önemli yönü, süreç sırasında ortaya çıkabilecek birleştirme çakışmalarının ele alınmasıdır. Birden fazla taahhüt birleştirildiğinde, farklı taahhütlerdeki değişiklikler birbiriyle çelişebilir. Bu çakışmaları çözmek için Git aşağıdaki komutları sağlar: hangi dosyaların çakıştığını görmek ve bunları çözümlendi olarak işaretlemek için. Çatışmaları çözdükten sonra yeniden tabana devam edersiniz .
İşler ters giderse yeniden tabanın nasıl iptal edileceğini bilmek de faydalıdır. Komuta yeniden temellendirme işlemini durdurur ve deponuzu yeniden temellendirme başlamadan önceki durumuna döndürür. Bu, yeniden yapılandırma işlemi sırasında yapılan değişiklikleri güvenli bir şekilde geri alabilmenizi sağlar. Bu komutları anlamak, karmaşık Git geçmişlerini verimli bir şekilde yönetme yeteneğinizi önemli ölçüde geliştirebilir.
- Taahhütlerin ezilmesi ne anlama geliyor?
- Taahhütlerin ezilmesi, taahhüt geçmişini basitleştirmek için birden fazla taahhüdün tek bir taahhütte birleştirilmesi anlamına gelir.
- Neden taahhütleri ezmeliyim?
- Taahhütlerin ezilmesi, özellikle çok sayıda küçük taahhüt kullanıldığında proje geçmişinizi daha temiz ve okunması kolay hale getirebilir.
- Etkileşimli bir yeniden tabanı nasıl başlatırım?
- Komutu kullanın N'yi ezmek istediğiniz taahhütlerin sayısıyla değiştirin.
- Etkileşimli yeniden tabanda 'seçme' ve 'ezme' ne anlama geliyor?
- 'Pick' bir taahhüdü olduğu gibi tutar, 'squash' ise onu önceki taahhütle birleştirir.
- Yeniden yapılandırma sırasındaki çatışmaları nasıl çözerim?
- Kullanmak çakışmaları belirlemek, bunları manuel olarak çözmek ve ardından Ve .
- Bir şeyler ters giderse yeniden temeli iptal edebilir miyim?
- Evet, kullanabilirsin Yeniden tabanı durdurmak ve önceki duruma dönmek için.
- Taahhütleri ezmek için Bash betiği kullanmanın faydası nedir?
- Bash betiği süreci otomatikleştirerek zamandan tasarruf sağlar ve manuel hata riskini azaltır.
- Yeniden yapılanmadaki taahhütleri otomatik olarak ezmenin bir yolu var mı?
- Evet, rebase yapılacaklar listesini değiştirmek için bir komut dosyası kullanarak , 'toplama'yı otomatik olarak 'squash' olarak değiştirebilirsiniz.
Git Commit Squashing'i Tamamlama
Git'te taahhütlerin ezilmesi, temiz ve okunabilir bir proje geçmişi sağlamak için güçlü bir tekniktir. İster etkileşimli yeniden taban kullanın ister Bash betiğiyle otomatikleştirin, birden fazla işlemi tek bir işlemde birleştirerek günlüğün yönetimini kolaylaştırabilirsiniz. Çatışmaların nasıl çözüleceğini ve yeniden tabanın nasıl iptal edileceğini anlamak Git uzmanlığınıza katkıda bulunarak ortaya çıkan sorunları çözebilmenizi sağlar. Bu komutlara ve yöntemlere hakim olmak, sürüm kontrol uygulamalarınızı önemli ölçüde geliştirecektir.