0Pricing
DevOps Bootcamp · บทเรียน

ทำความเข้าใจ Git Hooks

สำรวจประเภทต่าง ๆ ของ Git Hooks และจุดที่ Hooks ทำงานในเวิร์กโฟลว์ Git

ทำความเข้าใจ Git Hooks เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

Git Hooks คืออะไร

ยินดีต้อนรับสู่ Git Hooks! Git hooks คือสคริปต์ที่ทรงพลังและปรับแต่งได้ ซึ่ง Git จะเรียกใช้โดยอัตโนมัติก่อนหรือหลังเหตุการณ์ต่าง ๆ เช่น การคอมมิต การส่ง หรือการรับการคอมมิตที่ถูกส่งมา

ลองนึกภาพว่าเป็นจุดตรวจสอบหรือการดำเนินการอัตโนมัติในกระบวนการทำงานของ Git สิ่งเหล่านี้ช่วยบังคับใช้มาตรฐานของโครงการ ทำงานต่าง ๆ โดยอัตโนมัติ และเชื่อมต่อกับระบบอื่น

Hooks อยู่ที่ใด

คลังข้อมูล Git ทุกแห่งจะมีไดเรกทอรี .git/hooks ภายในนั้นคุณจะพบสคริปต์ hook ตัวอย่าง (โดยปกติจะลงท้ายด้วย .sample)

หากต้องการเปิดใช้งาน hook เพียงลบนามสกุล .sample ออกและทำให้ไฟล์เรียกใช้งานได้ จากนั้น Git จะเรียกใช้ไฟล์ดังกล่าวในเวลาที่เหมาะสม

  • ตำแหน่ง: .git/hooks/
  • ไฟล์: สคริปต์เชลล์ (Bash, Python, Ruby เป็นต้น)
  • การเปิดใช้งาน: เปลี่ยนชื่อและทำให้เรียกใช้งานได้

ฝั่งไคลเอ็นต์กับฝั่งเซิร์ฟเวอร์

Git hooks แบ่งออกเป็นสองประเภทหลักตามตำแหน่งที่ทำงาน:

  • Hooks ฝั่งไคลเอ็นต์: ทำงานบนเครื่องของคุณ (เช่น ก่อนที่คุณจะคอมมิตหรือรีเบส) ใช้สำหรับทำให้กระบวนการทำงานส่วนตัวเป็นอัตโนมัติและบังคับใช้นโยบายในเครื่อง
  • Hooks ฝั่งเซิร์ฟเวอร์: ทำงานบนเซิร์ฟเวอร์ Git ระยะไกล (เช่น เมื่อคุณส่งโค้ดไปยังคลังข้อมูลที่ใช้ร่วมกัน) ใช้บังคับใช้นโยบายของโครงการสำหรับทุกคน

Hook ฝั่งไคลเอ็นต์: pre-commit

Hook pre-commit เป็นหนึ่งใน hook ฝั่งไคลเอ็นต์ที่ใช้กันมากที่สุด โดยทำงาน *ก่อน* ที่ Git จะสร้างการคอมมิตอย่างเป็นทางการ

หากสคริปต์ pre-commit จบการทำงานด้วยสถานะที่ไม่ใช่ศูนย์ Git จะยกเลิกการคอมมิต ซึ่งเหมาะอย่างยิ่งสำหรับงานต่าง ๆ เช่น:

  • ตรวจรูปแบบโค้ด (ตรวจหาข้อผิดพลาดด้านรูปแบบ)
  • เรียกใช้การทดสอบหน่วย
  • ตรวจหาไฟล์ขนาดใหญ่หรือข้อมูลที่ละเอียดอ่อน

Hook ฝั่งไคลเอ็นต์: commit-msg

Hook commit-msg จะทำงาน *หลังจาก* ที่คุณป้อนข้อความของการคอมมิตแล้ว แต่ *ก่อนที่* การคอมมิตจะเสร็จสมบูรณ์

Hook นี้มีประโยชน์สำหรับตรวจสอบให้แน่ใจว่าข้อความของการคอมมิตเป็นไปตามแบบแผนหรือรูปแบบที่กำหนด ตัวอย่างเช่น สามารถตรวจสอบว่า:

  • ข้อความขึ้นต้นด้วย ID ของบัตรงาน (เช่น [JIRA-123])
  • ความยาวของข้อความอยู่ภายในขีดจำกัด
  • มีหรือไม่มีคำสำคัญที่กำหนด

Hook ฝั่งไคลเอ็นต์: post-commit

Hook post-commit จะทำงาน *ทันทีหลังจาก* สร้างการคอมมิตสำเร็จ

ต่างจาก pre-commit หรือ commit-msg ตรงที่ hook นี้ไม่สามารถเปลี่ยนผลลัพธ์ของการคอมมิตได้ โดยมักใช้สำหรับการแจ้งเตือนหรือการเชื่อมต่อระบบ เช่น:

  • แจ้งสมาชิกในทีม
  • อัปเดตเครื่องมือจัดการโครงการ
  • เรียกใช้การสร้างระบบผสานรวมอย่างต่อเนื่อง (CI) (แม้โดยทั่วไปจะใช้กับ hook ฝั่งเซิร์ฟเวอร์มากกว่า)

ฮุกฝั่งเซิร์ฟเวอร์: pre-receive

เมื่อมาดูฮุกฝั่งเซิร์ฟเวอร์ pre-receive จะทำงานก่อนที่การอ้างอิงใด ๆ (เช่น สาขาหรือแท็ก) จะได้รับการอัปเดตในคลังข้อมูลระยะไกล

ฮุกนี้มีประสิทธิภาพมากสำหรับบังคับใช้นโยบายสำคัญของคลังข้อมูล เช่น:

  • ป้องกันการพุชโดยตรงไปยังสาขา main
  • ตรวจสอบให้แน่ใจว่าคอมมิตทั้งหมดมีลายเซ็น
  • ตรวจสอบข้อมูลระบุตัวตนของผู้คอมมิต

หากฮุกนี้จบการทำงานด้วยรหัสที่ไม่ใช่ศูนย์ การพุชทั้งหมดจะถูกปฏิเสธ

ฮุกฝั่งเซิร์ฟเวอร์: post-receive

ฮุก post-receive จะทำงานหลังจากการพุชอัปเดตการอ้างอิงในคลังข้อมูลระยะไกลสำเร็จแล้ว

เช่นเดียวกับ post-commit ฮุกนี้ไม่สามารถปฏิเสธการพุชได้ โดยทั่วไปใช้สำหรับ:

  • ทริกเกอร์กระบวนการ CI/CD
  • อัปเดตเครื่องมือติดตามปัญหาภายนอก
  • ส่งการแจ้งเตือนทางอีเมลให้ทีม
  • นำโค้ดไปใช้งานในสภาพแวดล้อมจัดเตรียม

การสร้างฮุกอย่างง่าย

หากต้องการสร้างฮุก คุณเพียงสร้างไฟล์ด้วยชื่อของฮุก (เช่น pre-commit) ในไดเรกทอรี .git/hooks/ ของคุณ มาสร้างฮุกพื้นฐานกัน:

#!/bin/sh

# This pre-commit hook will always succeed
echo "Running pre-commit hook..."
exit 0

การทำให้ฮุกเรียกใช้งานได้

หลังจากสร้างสคริปต์ฮุกแล้ว คุณต้องทำให้สคริปต์เรียกใช้งานได้ มิฉะนั้น Git จะไม่เรียกใช้ ใช้คำสั่ง chmod ในเทอร์มินัลของคุณ:

chmod +x .git/hooks/pre-commit

จากนี้ ทุกครั้งที่คุณพยายามคอมมิต Git จะเรียกใช้สคริปต์นี้

ตรวจสอบอย่างรวดเร็ว: จังหวะเวลาของฮุก

ฮุก Git จะทำงาน ณ จุดต่าง ๆ ที่กำหนดไว้ในกระบวนการทำงานของคุณ การเข้าใจจังหวะเวลาเป็นกุญแจสำคัญในการใช้งานฮุกอย่างมีประสิทธิภาพ

ทบทวน: ทำความเข้าใจฮุก Git

คุณได้ก้าวแรกเข้าสู่โลกอันทรงพลังของฮุก Git แล้ว

  • ฮุก Git คือสคริปต์ที่ทำให้การดำเนินการต่าง ๆ เป็นอัตโนมัติระหว่างเหตุการณ์ของ Git
  • ฮุกเหล่านี้อยู่ในไดเรกทอรี .git/hooks/ ของคลังข้อมูลของคุณ
  • ฮุกมีทั้งแบบ ฝั่งไคลเอนต์ (เครื่องภายในเครื่อง) และ ฝั่งเซิร์ฟเวอร์ (คลังข้อมูลระยะไกล)
  • ฮุกสำคัญอย่าง pre-commit และ pre-receive สามารถบังคับใช้นโยบายด้วยการบล็อกการดำเนินการต่าง ๆ
  • ฮุกอย่าง post-commit และ post-receive ใช้สำหรับการแจ้งเตือนหรือการเชื่อมต่อระบบหลังการดำเนินการ

ต่อไป เราจะลงมือสร้างตัวอย่างการใช้งานจริงของฮุกแต่ละประเภทกัน

คำถามที่พบบ่อย

บทเรียน “ทำความเข้าใจ Git Hooks” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ทำความเข้าใจ Git Hooks” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ทำความเข้าใจ Git Hooks”

สำรวจประเภทต่าง ๆ ของ Git Hooks และจุดที่ Hooks ทำงานในเวิร์กโฟลว์ Git คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “ทำความเข้าใจ Git Hooks” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทำความเข้าใจ Git Hooks
  2. Hooks ก่อนคอมมิตและหลังผสาน
  3. การปรับแต่งการกำหนดค่า Git
  4. การแบ่งปันฮุกด้วย Husky
← กลับไปที่ DevOps Bootcamp