Git adalah alat yang brilian. Ini memungkinkan Anda untuk tidak hanya melacak perubahan Anda dalam file melalui pengait tetapi juga berkolaborasi dengan orang lain secara mulus. Dalam hal itu, Git adalah salah satu alat yang mendorong pengembangan FOSS ke depan.
Namun, salah satu masalah terbesar dengan Git adalah butuh waktu dan upaya untuk mengelola repositori Anda. Misalnya, melakukan dan menyinkronkan repositori ini dapat memerlukan dua hingga tiga perintah git. Hal ini membuat pengelolaannya tidak hanya membosankan tetapi juga rentan terhadap kesalahan pengguna. Di sini kami menunjukkan kepada Anda beberapa kait Git yang sederhana namun efektif untuk mengelola repositori Anda dengan lebih baik.
Catatan : yAnda juga dapat mengelola Git di Emacs. Belajar bagaimana!
Apa itu Git Hooks?
Pada intinya, git-hook adalah subperintah fleksibel yang dapat Anda gunakan untuk membuat skrip khusus yang dijalankan setiap kali Git melakukan tindakan pada repositori. Sebagai contoh, dimungkinkan untuk menggunakan hook untuk secara otomatis memeriksa repositori Anda untuk kesalahan gaya bahkan sebelum Anda melakukannya.
Sumber GBImage: jslint
Subperintah hook bekerja dengan membaca folder “hooks” di bawah direktori “.git” repositori Anda. Folder ini berisi sejumlah file siap pakai yang menyediakan skrip sampel untuk setiap tindakan di Git yang dapat Anda otomatisasi.
Sebagian besar, Anda dapat menulis git hook dalam bahasa skrip apa pun yang Anda inginkan. Ini membuatnya sangat fleksibel dan mudah didekati oleh pengembang perangkat lunak mana pun.
Tip : untuk memulai dengan Git, Anda perlu mengatur nama pengguna dan email Git terlebih dahulu. Cari tahu caranya di panduan ini.
1. Mencegah Mendorong ke Guru
Salah satu kesalahan paling umum yang dilakukan pengguna di Git adalah mendorong komit dari cabang pengembangan langsung ke master. Ini bisa sangat membuat frustrasi jika Anda menggunakan Github untuk melacak dan memelihara proyek Anda.
Anda dapat mencegah masalah ini dengan membuat Git hook “pre-push” yang akan memeriksa dan mengonfirmasi setiap kali Anda mencoba mendorong repositori dari cabang master.
- Buka repositori Git yang ingin Anda lindungi.
- Buat file kait Git dengan skrip pemeriksaan Anda. Karena ini adalah hook yang harus dijalankan sebelum “push”, Anda perlu membuat file hook “pre-push”:
sentuh .git / hooks / pre-push
- Buka file hook baru Anda di editor teks.
nano .git / kait / pra-push
- Di dalam, tulis hook “pre-push†baru Anda. Sebagai contoh, berikut adalah skrip yang akan meminta konfirmasi Anda saat Anda mendorong dari cabang master:
#!/bin/sh  melindungi = ‘tuan’ saat ini =$ ( git simbolis-ref KEPALA | sed -e ‘s,.*/(.*),1,’ )  jika [ $proteksi = $arus ] Kemudian    membaca -P “Konfirmasi push to master? Y/t.” -N 1 -R < / dev / gema tty    jika gema $BALAS | grep -E ‘^[Yy]$’ > / dev / null lalu        KELUAR 0    fi    KELUAR 1 kalau tidak    KELUAR 0 fi
- Simpan kail baru Anda. Di nano, lakukan ini dengan menekan Ctrl + O , lalu Ctrl + X .
- Jalankan perintah berikut untuk memastikan bahwa Git dapat menjalankan hook baru Anda.
chmod +x .git / hooks / pre-push
2. Tolak Dorongan ke Cabang Master
Selain mencegah diri Anda mendorong ke master, Anda juga dapat membuat pengait sisi server yang akan menolak setiap dorongan ke cabang masternya. Ini sangat berguna jika Anda berbagi repositori dengan banyak pengembang.
Perbaiki ini dengan membuat hook “pre-receive” yang secara otomatis akan mencegah pengguna yang dibatasi untuk mendorong ke cabang master.
- Buat file kait Git “pra-terima” di repositori jarak jauh Anda.
sentuh .git / kait / pra-terima
- Buka file ini.
nano .git / kait / pra-terima
- Tambahkan skrip penolakan di hook “pra-terima†Anda. Misalnya, baris kode berikut harus bekerja di luar kotak:
#!/bin/sh  cabang =$ ( git simbolik-ref KEPALA | sed -e ‘s,.*/(.*),1,’ )  daftar hitam = ( alice bob )  jika [[ ${blacklist[*]} =~ $USER ]] ; Kemudian    jika [ ” $cabang ” == “master” ] ; Kemudian        gema “Anda tidak diizinkan melakukan perubahan di cabang ini”        KELUAR 1    fi fi
- Simpan file hook baru Anda. Dalam kasus saya, saya perlu menekan Ctrl + O , lalu Ctrl + X untuk menyimpan file.
- Simpan skrip hook Anda dan buat agar dapat dieksekusi.
chmod +x .git / kait / pra-terima
Tip : Anda juga dapat menggunakan alias Git untuk membuat penggunaan Git lebih efisien.
3. Kunci Repositori dari Rebasing
Kesalahan umum lainnya yang dilakukan pengguna di Git adalah mengubah basis cabang yang sedang aktif. Ini bisa menjadi masalah yang membuat frustrasi jika Anda mengerjakan repositori dengan banyak kontributor, karena rebasing akan menghapus komitmen yang telah dibuat oleh pengguna lain.
Anda dapat mencegah masalah ini dengan membuat hook “pre-rebase” yang akan memeriksa apakah cabang saat ini terkunci.
- Buat file “pre-rebase†di direktori “.git/hooks†Anda:
sentuh .git / kait / pra-rebase
- Buka file ini untuk diedit.
nano .git / kait / pra-rebase
- Tambahkan skrip rebase di dalam file hook baru Anda.
#!/bin/sh  cabang = “$2″ [ -N ” $cabang ” ] || cabang =$ ( git rev-parse –abbrev-ref KEPALA ) kunci = “cabang. ${cabang} .rebaselock”  jika [ ” $(git config –bool “$lock”) ” = true ] ; Kemudian gema “hook pra-rebase: ” $lock “” disetel ke true. Menolak untuk rebase.”” KELUAR 1 fi
- Simpan file hook baru Anda dan buat agar dapat dieksekusi.
chmod +x .git / kait / pra-rebase
4. Paksa Pemeriksaan Gaya dan Sintaks pada Kode Anda
Salah satu penggunaan Git hook yang paling membantu adalah dengan menautkannya dengan linter kode. Ini adalah program sederhana yang memeriksa apakah kode Anda mengikuti gaya dan format proyek.
- Untuk menautkan linter ke repositori Git Anda, pertama-tama buatlah file hook “pre-commitâ€.
sentuh .git / hooks / pre-commit
- Instal linter yang sesuai untuk bahasa proyek Anda. Dalam hal ini, saya menggunakan “”shellcheck”” untuk menganalisis kode Bash saya:
sudo tepat instal shellcheck
- Buka file hook baru Anda dan tambahkan skrip berikut.
#!/bin/bash untuk mengajukan dalam $ ( git diff –cache –nama-saja –diff-filter =AM | grep -E ‘.sh$’ ) lakukan shellcheck “” $file “” # Jalankan linter untuk setiap file baru.    jika [ $? -ne 0 ]