ทำความเข้าใจ Git Hooks
สำรวจประเภทต่าง ๆ ของ Git Hooks และจุดที่ Hooks ทำงานในเวิร์กโฟลว์ Git
ทำความเข้าใจ Git Hooks เป็นบทเรียน Git & GitHub Professional Workflow ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Git & GitHub Professional Workflow และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 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) และปลดล็อคส่วนที่เหลือของคอร์ส Git & GitHub Professional Workflow ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ทำความเข้าใจ Git Hooks”
สำรวจประเภทต่าง ๆ ของ Git Hooks และจุดที่ Hooks ทำงานในเวิร์กโฟลว์ Git คุณปฏิบัติ Git & GitHub Professional Workflow ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Git & GitHub Professional Workflow หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Git & GitHub Professional Workflow บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “ทำความเข้าใจ Git Hooks” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Git & GitHub Professional Workflow นี้ได้ไหม
ได้ บทเรียน Git & GitHub Professional Workflow ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำความเข้าใจ Git Hooks
- Hooks ก่อนคอมมิตและหลังผสาน
- การปรับแต่งการกำหนดค่า Git
- การแบ่งปันฮุกด้วย Husky