Cennet Teması Lisans doğrulanmadı, Lisansı doğrulamak için tema seçenekleri sayfasına gidin, Her alan adı için tek bir lisansa ihtiyacınız var.

Git Hooks'un deponuzu yönetmesi kolaydır

Git Bu harika bir araç. Yalnızca bir dosyadaki değişiklikleri kancalar aracılığıyla izlemenize değil, aynı zamanda diğer kişilerle sorunsuz bir şekilde işbirliği yapmanıza olanak tanır. Bu bağlamda Git, FOSS'un gelişimini ileriye götüren araçlardan biridir. Ancak Git ile ilgili en büyük sorunlardan biri, depolarınızı yönetmenin zaman ve çaba gerektirmesidir. Örneğin, bu depoları çalıştırmak ve senkronize etmek iki ila üç git komutu alabilir. Bu, onları yönetmeyi yalnızca sıkıcı değil, aynı zamanda kullanıcı hatasına da açık hale getirir. Burada, depolarınızı daha iyi yönetmeniz için bazı basit ama güçlü Git kancalarını gösteriyoruz.

5-git-hooks-00-featured-image-800x400.jpg Deponuzu Yönetmek İçin Basit Git Kancaları

Git Kancaları nedir?

Git-hook özünde, Git depoda bir eylem gerçekleştirdiğinde çalışacak özel betikler oluşturmak için kullanabileceğiniz esnek bir alt komuttur. Örneğin, deponuzu işlemeden önce stil hataları için otomatik olarak kontrol etmek için kancayı kullanmak mümkündür.

5-git-hooks-02-example-linter.png Deponuzu Yönetmek İçin Basit Git Kancaları

Hook alt komutu, deponun “.git” dizini altındaki “hooks” klasörünü okuyarak çalışır. Bu klasör, otomatik olarak çalıştırabileceğiniz her Git eylemi için örnek bir komut dosyası sağlayan bir dizi hazır dosya içerir.

5-git-hooks-03-default-hooks-directory.png Deponuzu Yönetmek İçin Basit Git Kancaları

Çoğunlukla, git hook'u istediğiniz herhangi bir betik dilinde yazabilirsiniz. Bu, onu inanılmaz derecede esnek ve herhangi bir yazılım geliştiricisi için ulaşılabilir kılar.

1. Ustalaşmak için zorlamayı önleyin

Bir kullanıcının Git'te yaptığı en yaygın hatalardan biri, geliştirme dalından bir taahhüdü doğrudan master'a göndermektir. Projelerinizi izlemek ve sürdürmek için Github kullanıyorsanız, bu inanılmaz derecede sinir bozucu olabilir.

5-git-hooks-04-example-git-push.png Deponuzu Yönetmek İçin Basit Git Kancaları

Ana daldan bir havuz göndermeye çalıştığınızda kontrol edecek ve onaylayacak bir ön gönderme oluşturarak bu sorunu önleyebilirsiniz.

  1. Adresine git Git deposu korumak istediğin 5-git-hooks-05-cd-to-repository.png Deponuzu Yönetmek İçin Basit Git Kancaları
  2. Oluşturmak Git kanca dosyası komut dosyası düzelticinizi kullanarak. Bu kancanın daha önce çalıştırılması gerektiğinden "Ödemek" , o zaman bir kanca oluşturmanız gerekir "ön ödemeli":
    .git/hooks/pre-push'a dokunun
  3. kanca dosyası yeni Metin düzeltici.
    nano .git/hooks/ön-itme
  4. İçinde, yaz "ödemeden önce" kancası. Örneğin, master dalından bastığınızda sizden onay isteyecek bir komut dosyası aşağıdadır:
    #!/bin/shprotect='master' current=$(git symbol-ref HEAD | sed -e 's,.*/\(.*\),\1,') if [ $protect = $current ] sonra -p "Push to master'ı onayla? E/n." -n 1 -r < /dev/tty yankı eğer yankı $YANIT | grep -E '^[Yy]$' > /dev/null sonra 0 fi'den çık 1'den çık yoksa 0 fi'den çık
  5. Kayıt etmek yeni kanca. içinde nano basarak yapın Ctrl + O Sonra Ctrl + X. 5-git-hooks-07-pre-push-hook-filled.png Deponuzu Yönetmek İçin Basit Git Kancaları
  6. Git'in yeni kancayı çalıştırabilmesi için aşağıdaki komutu çalıştırın.
chmod +x .git/hooks/pre-Push

2. Ana Şubeye Yapılan İtmeleri Reddet

Master'a itilmenizi önlemenin yanı sıra, sunucu tarafında master şubesine yapılan tüm push'ları reddedecek bir kanca da oluşturabilirsiniz. Bir depoyu birden çok geliştiriciyle paylaşıyorsanız, bu inanılmaz derecede yararlıdır.

Ayrıca okuyun:  Google Dokümanlar'da özel bir şablon nasıl oluşturulur?

5-git-hooks-08-git-log-sample.png Deponuzu Yönetmek İçin Basit Git Kancaları

Herhangi bir kısıtlanmış kullanıcının ana şubeye gönderilmesini otomatik olarak önleyecek bir 'ön alım' kancası oluşturarak bunu düzeltin.

  1. Oluşturmak "Ön satın alma" için Git kanca dosyası uzak deponuzda.
    .git/hooks/pre-receive'a dokunun
  2. Bunu aç dosya.
    nano .git/hooks/ön alım
  3. ret metni ekle kanca "avans makbuzu". Örneğin, aşağıdaki kod satırları kutunun dışında çalışmalıdır:
    #!/bin/sh şube=$(git symbol-ref HEAD | sed -e 's,.*/\(.*\),\1,') kara liste=(alice bob) if [[ ${karaliste[ *]} =~ $KULLANICI ]]; sonra if [ "$branch" == "master" ]; sonra yankı "Bu dalda değişiklik yapmanıza izin verilmiyor" çıkış 1 fi fi
  4. Yeni kanca dosyanızı kaydedin. Benim durumumda, dosyayı kaydetmek için Ctrl+O'ya, ardından Ctrl+X'e basmam gerekiyor.
  5. Kayıt etmek kanca metni ve eyleme geçirilebilir hale getirin.
chmod +x .git/hooks/ön alım

İpucu: Git'i daha verimli kullanmak için Git takma adını da kullanabilirsiniz.

3. Depoyu Yeniden Temellendirmeye Karşı Kilitleyin

Bir kullanıcının Git'te yaptığı bir diğer yaygın hata, o anda etkin olan dalı sıfırlamaktır. Yeniden düzenleme, diğer kullanıcılar tarafından yapılan taahhütleri kaldıracağından, çok sayıda katkıda bulunan bir havuz üzerinde çalışıyorsanız bu sinir bozucu bir sorun olabilir.

Ayrıca okuyun:  Outlook'ta bir e-postaya köprü nasıl eklenir ve silinir

5-git-hooks-11-git-rebase-man-page.png Deponuzu Yönetmek İçin Basit Git Kancaları

Mevcut şubenin kapalı olup olmadığını kontrol edecek bir 'pre-re-install' kancası oluşturarak bu sorunu önleyebilirsiniz.

  1. kurulmuş "yeniden yapılandırma öncesi" dosyası bir dizinde “.git/hooks”:
    .git/hooks/pre-rebase'e dokunun
  2. Bunu aç düzenleme için dosya.
    nano .git/hooks/rebase öncesi
  3. Komut dosyasını ekle yeniden baz almak içeride yeni kanca dosyası.
    #!/bin/sh dal="$2" [ -n "$dal" ] || şube=$(git rev-parse --abbrev-ref HEAD) lock="branch.${branch}.rebaselock" if [ "$(git config --bool "$lock")" = true ]; sonra yankı "yeniden temellendirme öncesi kanca: \"$lock\" doğru olarak ayarlanır. Yeniden temel atmayı reddetme." çıkış 1 fi
  4. Kayıt etmek kanca dosyası yeni ve yürütülebilir hale getirin.
chmod +x .git/hooks/rebase öncesi

4. Kodunuzda Stil ve Sözdizimi Kontrolü Zorlayın

Git kancasının en yararlı kullanımlarından biri, onu linter koduna bağlamaktır. Bu, kodunuzun projenin stiline ve formatına uyup uymadığını kontrol eden basit bir programdır.

5-git-hooks-14-shellcheck-man-page.png Deponuzu Yönetmek İçin Basit Git Kancaları

  1. ilişkilendirmek linter Git deponuza, önce bir kanca dosyası oluşturun "Önceden taahhütlü olma".
    .git/hooks/pre-commit'e dokunun
  2. kurmak linter projenizin diline uygun. bu durumda kullanıyorum “kabuk kontrolü” Bash kodumu ayrıştırmak için:
    sudo apt shellcheck'i kurun
  3. kanca dosyası yeni ve aşağıdaki betiği ekleyin.
    $(git diff --cached --name-only --diff-filter=AM | grep -E '\.sh$') dosyası için #!/bin/bash do shellcheck "$file" # için linter'ı çalıştırın her yeni dosya. eğer [ $? -ne 0 ]; sonra exit 1 # linter başarısız olursa taahhüdü sonlandırın. fi bitti
  4. Kayıt etmek kanca dosyası yeni ve yürütülebilir hale getirin:
    Chmod +X .git/Hooks/Pre-Commit

5. Depo Değişikliklerini Kullanıcılara Otomatik Olarak Bildirin

Son olarak, deponuz yeni bir taahhüt aldığında otomatik olarak bir e-posta gönderecek bir Git kancası da oluşturabilirsiniz. Deponuz için basit bir bildirim sistemi oluşturmak istiyorsanız bu kullanışlıdır.

  1. Oluşturmak kanca dosyası "alıcı sonrası" bir dizinde .git / kancalar deponuzda:
    .git/hooks/post-receive'e dokunun
  2. Git kanca dosyası yeni ve aşağıdaki betiği girin:
    #!/bin/sh commit_message=$(git log -1 --pretty=%B) users=("[e-posta korumalı]""[e-posta korumalı]""[e-posta korumalı]”) "${users[@]}" içindeki kullanıcı için; do mail -s "New Commit: $commit_message" $user < /dev/null done
  3. Kayıt etmek kanca dosyası yeni ve yürütülebilir hale getirin.
    chmod +x .git/hooks/alma sonrası

Sık sorulan sorular

S1.C gibi derlenmiş bir dilde Git kancaları yazabilir miyim?

Ayrıca okuyun:  Telefonunuzun SAR değerini kontrol etmenin 7 yolu

Cevap. Git Hooks'un en büyük sınırlamalarından biri, doğrudan terminalden çalıştırabileceğiniz bir dil kullanmanızı gerektirmesidir. Bu, Git kancalarının betikleri için herhangi bir yerelleştirilmiş dili desteklemediği anlamına gelir. Örneğin, C veya C++ yerine Python veya Shell kullanarak yeni Git kancaları oluşturabilirsiniz.

S2.Aynı Git deposunda birden fazla kanca çalıştırmak mümkün müdür?

Cevap. Evet. Yukarıdaki örnekler kancaları ayrı ayrı özellikler olarak gösterse de, kendi benzersiz iş akışınızı oluşturmak için bunları kolayca karıştırabilirsiniz, bu da Git kancalarını inanılmaz derecede esnek ve her türlü kodlama durumuna uyarlanabilir hale getirir. Örneğin, deponuzda hem “Press to Master” kancasını hem de “Syntax Check” ön taahhüd kancasını kullanabilirsiniz.

S3.Git kancaları neden kullanıcılara e-posta göndermiyor?

Cevap. Bu sorun büyük olasılıkla uzak sunucunuzun giden e-postaları düzgün şekilde gönderememesinden kaynaklanmaktadır. Bunu düzeltmek için uzak sunucunuzun güvenli olduğundan ve bir SMTP etki alanıyla birlikte çalışan bir posta dağıtım aracısına sahip olduğundan emin olun.

Üst düğmeye git