Peta dunia

 

EN: Read in English

Dunia 10: Git Mendalam

Hook

Anda akan belajar: cara Git jalankan semakan anda sendiri sebelum commit, dan cara kongsinya.

Teks BM belum disemak oleh penutur asli.

Masalahnya

Anda asyik commit (titik simpan) dengan console.log yang tertinggal. Rakan sepasukan mengeluh. Boleh Git halang anda sebelum commit?

Pilih satu jawapan.

Tengok

hook: Skrip yang Git jalankan sendiri pada saat tertentu, contohnya sejurus sebelum commit. (cangkuk) ialah skrip yang Git jalankan sendiri pada saat tertentu. Hook tinggal dalam .git/hooks. Ketik setiap saat.

Ketik setiap titik pada garis masa.

Tengok

bash
cat .git/hooks/pre-commit
#!/bin/sh
# Stop the commit if a staged line adds console.log
if git diff --cached | grep -q "^+.*console.log"; then
echo "Please remove console.log first."
exit 1
fi
chmod +x .git/hooks/pre-commit
git commit -m "Add menu"
Please remove console.log first.
Hook pre-commit: kalau baris dalam kotak tambah console.log, ia cetak Please remove console.log first dan keluar dengan 1. Selepas chmod +x, git commit berhenti dengan mesej itu.

Hook mesti boleh dilaksanakan: chmod +x. Kalau ia tamat dengan exit 1, Git hentikan commit. exit 0 benarkan ia lalu.

Cuba

Susun kitaran hidup hook pre-commit.

Langkah pertama di atas. Susun ikut turutan. Guna anak panah, atau seret.

  • Hook keluar dengan 0, jadi commit dibuat
  • Tulis skrip dalam .git/hooks/pre-commit
  • Jadikan ia boleh dilaksanakan dengan chmod +x
  • Jalankan git commit
  • Git jalankan hook dulu

Tengok

bash
cat .git/hooks/commit-msg
#!/bin/sh
# $1 is the file that holds the message
if ! grep -qE "^(feat|fix|docs): " "$1"; then
echo "Start the message with feat:, fix: or docs:"
exit 1
fi
git commit -m "stuff"
Start the message with feat:, fix: or docs:
Hook commit-msg: kalau fail mesej tak bermula dengan feat, fix atau docs, ia cetak tip dan keluar dengan 1. git commit -m stuff berhenti dengan tip itu.

Hook commit-msg semak mesej. Git beri fail mesej kepadanya sebagai $1. Di sini, “stuff” tak lepas.

Teka

Anda tambah hook dalam .git/hooks. Mei clone repo itu. Adakah hook itu berjalan dalam komputernya?

Pilih satu jawapan.

Cuba

Untuk kongsi hook, commit dalam folder seperti .githooks. Kemudian setiap orang tetapkan core.hooksPath. Baca hook itu, kemudian tetapkannya.

Semak

Tabiat baik, atau perlu dibaiki? Leret setiap satu.

Leret ke kanan untuk bagus, ke kiri untuk perlu baiki. Atau guna butang.

1 / 4

Pastikan hook laju

Pastikan hook laju

Anda berjaya!

Kini anda boleh suruh Git semak kerja anda sebelum setiap commit.

Nak tahu lebih (pilihan)

Repo baru dapat contoh hook dalam .git/hooks, yang berakhir dengan .sample. Buang hujung itu untuk mencuba. Hook boleh ditulis dalam apa-apa bahasa: baris pertama namakannya. git commit --no-verify langkau pre-commit dan commit-msg. git hook run pre-commit jalankan hook secara manual.