อัปปรูฟ / แอปปรูฟ: คืออะไร, approval และ code review ใน Git

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-08-01 เวลาอ่าน: 8 นาที

Approval (อัปปรูฟ) คือการยืนยันใน GitHub, GitLab หรือ Bitbucket ว่า pull request ผ่าน code review แล้วและสามารถถูกผสานเข้ากับสาขาเป้าหมายได้ เจ้าของ repository เป็นผู้กำหนดจำนวนการอัปปรูฟที่บังคับ ซึ่งหลังจากนั้น PR จะถูกปลดล็อกให้ทำ merge ได้ จากข้อมูลของเอกสารของ GitHub (2026) ในกระบวนการรีวิว ผู้รีวิวสามารถฝากความคิดเห็น ขอให้แก้ไข (Request Changes) หรืออนุมัติ PR (Approve) ได้ Approval ไม่ได้เป็นเพียงพิธีการเท่านั้น แต่ยังเป็นการกระทำที่มีนัยสำคัญ: ผู้รีวิวต้องรับผิดชอบต่อคุณภาพของโค้ดที่จะถูกนำเข้า

หัวใจสำคัญ

  • อัปปรูฟ — การอนุมัติ pull request หลัง code review ซึ่งอนุญาตให้ merge เข้าสู่สาขาเป้าหมายได้
  • จำนวนผู้รีวิว — ตั้งค่าได้ใน repository: ตั้งแต่ 1 ไปจนถึงการบังคับให้ทุกคนที่ถูกกำหนดต้องอัปปรูฟ
  • Request Changes — สถานะที่บล็อก: PR ไม่สามารถถูกผสานได้จนกว่าจะมีการรีวิวซ้ำหลังการแก้ไข
  • อัปปรูฟโดยผู้เขียน — ถูกห้าม: การตัดสินใจต้องทำโดยนักพัฒนาอิสระที่ไม่ได้มีส่วนร่วมในการเขียนโค้ด
  • เกต CI/CD — การอัปปรูฟจะปลดล็อก PR โดยอัตโนมัติก็ต่อเมื่อผ่านการตรวจสอบทั้งหมดแล้วเท่านั้น

อัปปรูฟ pull request คืออะไร

อัปปรูฟ (approval) คือการรีวิวเชิงบวกสำหรับ pull request ซึ่งหมายความว่าผู้รีวิวตรวจสอบโค้ดแล้ว ไม่พบปัญหาวิกฤต และเห็นว่าการเปลี่ยนแปลงพร้อมสำหรับการผสาน ในอินเทอร์เฟซของ GitHub นี่คือปุ่มสีเขียว "Approve" บนหน้า PR หลังจากการอัปปรูฟ ผู้เขียน (หรือสมาชิกคนใดก็ตามที่มีสิทธิ์เขียน) สามารถทำ merge ได้

กระบวนการอัปปรูฟเป็นส่วนหนึ่งของ Branch Protection Rules เจ้าของ repository กำหนดข้อกำหนดที่บังคับ: จำนวนการอัปปรูฟขั้นต่ำ (เช่น 1 หรือ 2), ใครบ้างที่อัปปรูฟได้ (เจ้าของโค้ด, สมาชิกทีม), และ PR ต้องถูกอัปปรูฟซ้ำหลังการแก้ไขหรือไม่ (Dismiss stale reviews) หากไม่ตั้งค่ากฎ การอัปปรูฟเป็นเพียงขั้นตอนทางเลือก แต่ในทีมมืออาชีพแล้วถือเป็นสิ่งจำเป็น

GitLab ใช้กลไกที่คล้ายกันชื่อ Approval Rules ใน GitLab คุณสามารถตั้งค่าได้ว่าต้องการการอัปปรูฟกี่ครั้งจากกลุ่มต่าง ๆ (เช่น 2 ครั้งจากนักพัฒนา backend และ 1 ครั้งจาก DevOps) หลังจากได้รับการอัปปรูฟที่บังคับครบทั้งหมด PR จะถูกปลดล็อกโดยอัตโนมัติสำหรับการ merge โดยมีเงื่อนไขว่า pipeline CI/CD เป็นสีเขียว

ประเภทการรีวิว: Approve, Request Changes, Comment

ใน GitHub และ GitLab มี การรีวิวสามประเภท ที่ผู้รีวิวสามารถฝากไว้บน pull request ได้ แต่ละประเภทมีสถานะและผลกระทบต่อกระบวนการผสานที่แตกต่างกัน Approve เป็นสีเขียว, Request Changes เป็นสีแดง, Comment เป็นสีเทากลาง ๆ การเลือกประเภทขึ้นอยู่กับคุณภาพของโค้ดและความพร้อมของการเปลี่ยนแปลงที่จะถูกนำเข้า

Approve — ผู้รีวิวยืนยันว่า: โค้ดเขียนอย่างถูกต้อง ตรงตามมาตรฐาน ไม่มีข้อผิดพลาดที่ชัดเจน และสามารถถูกผสานได้ Approve ไม่ได้หมายความว่าโค้ดสมบูรณ์แบบ — เพียงแต่ว่ามันดีพอสำหรับ production หากมีข้อสังเกตเล็กน้อย (สไตล์, การตั้งชื่อ) ก็สามารถฝากเป็นความคิดเห็นได้โดยไม่บล็อก PR

Request Changes — ผู้รีวิวพบปัญหาที่ต้องแก้ไขก่อนการ merge: ข้อผิดพลาดเชิงตรรกะ, ช่องโหว่, การละเมิดสถาปัตยกรรม, การไม่มีเทสต์ หลังจาก Request Changes PR จะถูกบล็อก และเพื่อปลดล็อกจำเป็นต้องมีการอัปปรูฟซ้ำจากผู้รีวิวคนเดิม (หากเปิดตัวเลือก Dismiss stale reviews เมื่อมีคอมมิตใหม่)

  • Approve — โค้ดพร้อมสำหรับการผสาน, สามารถ merge ได้หลังผ่าน CI
  • Request Changes — การแก้ไขที่จำเป็น, PR ถูกบล็อกจนกว่าจะมีการรีวิวซ้ำ
  • Comment — ข้อสังเกตหรือข้อเสนอทั่วไปโดยไม่บล็อก PR

การตั้งค่ากฎการอัปปรูฟใน repository

Branch Protection Rules คือกลไกของ GitHub สำหรับควบคุมคุณภาพของการผสาน ตั้งค่าได้ที่ Settings → Branches สำหรับแต่ละสาขาที่ได้รับการป้องกัน (main, develop, release/*) พารามิเตอร์หลัก: จำนวนการอัปปรูฟที่บังคับ, เจ้าของโค้ด (CODEOWNERS), การตรวจสอบ CI/CD ที่บังคับ, และการห้าม push โดยไม่มี PR

พารามิเตอร์ Dismiss stale pull request approvals — จะยกเลิกการอัปปรูฟโดยอัตโนมัติหากมีการเพิ่มคอมมิตใหม่ลงใน PR ซึ่งรับประกันว่าผู้รีวิวจะอนุมัติเวอร์ชันของโค้ดที่จะถูกผสานจริง ๆ หากไม่มีการตั้งค่านี้ ผู้เขียนอาจเพิ่มโค้ดใหม่หลังการอัปปรูฟ และมันจะเข้าไปใน main โดยไม่มีการตรวจสอบซ้ำ

CODEOWNERS — ไฟล์ที่รากของ repository ซึ่งกำหนดผู้รับผิดชอบสำหรับแต่ละไดเรกทอรี หาก PR แตะต้องไฟล์ที่เป็นของเจ้าของโค้ด การอัปปรูฟของเขาจะกลายเป็นสิ่งจำเป็น CODEOWNERS ช่วยกระจายขอบเขตความรับผิดชอบ: นักพัฒนา iOS รับผิดชอบไฟล์ Swift, DevOps — คอนฟิก Docker, ผู้ทดสอบ — สถานการณ์การทดสอบ

bash
# ตัวอย่างไฟล์ CODEOWNERS ในรากของ repository

# นักพัฒนา iOS เป็นเจ้าของโค้ด Swift
*.swift @team/ios-developers

# DevOps เป็นเจ้าของคอนฟิก CI/CD
.github/workflows/* @devops-team

# วิศวกร QA ตรวจสอบเทสต์
**/tests/* @qa-engineers

# เจ้าของเริ่มต้นสำหรับสิ่งอื่นทั้งหมด
* @tech-leads

Code review ก่อนอัปปรูฟ: ควรตรวจสอบอะไร

Code review ก่อนการอัปปรูฟคือการตรวจสอบโค้ดอย่างเป็นระบบ ไม่ใช่การกวาดดู diff แบบผ่าน ๆ การ code review ที่มีคุณภาพรวมถึงการตรวจสอบสถาปัตยกรรม, ตรรกะ, สไตล์, เทสต์ และความปลอดภัย หากไม่มีการตรวจสอบนี้ การอัปปรูฟก็กลายเป็นเพียงพิธีการ ไม่ใช่เครื่องมือควบคุมคุณภาพ

สิ่งที่ตรวจสอบก่อนอื่น: ตรรกะของการเปลี่ยนแปลง — โค้ดแก้ปัญหาที่ได้รับมอบหมายได้หรือไม่, มีผลข้างเคียงหรือไม่, การจัดการกรณีขอบถูกต้องหรือไม่ เทสต์ — เทสต์ใหม่ครอบคลุมทุกสถานการณ์หรือไม่, เทสต์เดิมยังผ่านหลังการเปลี่ยนแปลงหรือไม่ ความปลอดภัย — มี SQL injection, XSS, การรั่วไหลของข้อมูลที่ละเอียดอ่อนหรือไม่

สิ่งที่ไม่ควรเป็นประเด็นของการรีวิว: สไตล์การจัดรูปแบบ (สำหรับสิ่งนี้มี linter และ formatter), การตัดสินใจเชิงสถาปัตยกรรม ที่ตกลงกันไว้ล่วงหน้า (มีการหารือก่อนการเขียนโค้ด) หากรีวิวมีมากกว่า 400 บรรทัดหรือใช้เวลานานกว่าหนึ่งชั่วโมง — นั่นคือสัญญาณว่างานใหญ่เกินไปและต้องแบ่งย่อย แนวปฏิบัติที่ดีที่สุดในการรีวิว — ทีละ 200-400 บรรทัดภายใน 24 ชั่วโมงหลังสร้าง PR

  • ตรรกะ — ความถูกต้องของการแก้ปัญหา, การจัดการข้อผิดพลาด, กรณีขอบ
  • เทสต์ — ความครอบคลุมของสถานการณ์ใหม่, การผ่านของเทสต์เดิม, การไม่มีเทสต์ flaky
  • ความปลอดภัย — ไม่มี injection, การ escape เอาต์พุต, การเข้าถึงข้อมูล
  • ประสิทธิภาพ — ประสิทธิภาพของอัลกอริทึม, คิวรีที่ซ้ำซ้อน, การรั่วไหลของหน่วยความจำ
  • เอกสารประกอบ — เอกสารได้รับการอัปเดตหรือไม่, ความคิดเห็นในส่วนที่ซับซ้อนเข้าใจง่ายหรือไม่

Workflow ที่มีการอัปปรูฟในทีม

workflow ทั่วไปที่มีการอัปปรูฟในทีมนักพัฒนา 5-10 คนมีหน้าตาแบบนี้: นักพัฒนาสร้าง PR, กำหนดผู้รีวิว (โดยปกติ 1-2 คนจากทีมหรือเจ้าของโค้ด), CI/CD เริ่มการตรวจสอบอัตโนมัติ หลังจากได้รับการอัปปรูฟที่บังคับครบทั้งหมดและ CI เป็นสีเขียว ผู้เขียนก็ทำ merge เวลาจากการสร้าง PR จนถึง merge โดยเฉลี่ยอยู่ที่ 2 ชั่วโมงถึง 2 วัน ขึ้นอยู่กับความซับซ้อน

GitHub Actions อนุญาตให้ ทำให้ merge เป็นอัตโนมัติ หลังการอัปปรูฟ หากตั้งค่ากฎของสาขาไว้ GitHub จะบล็อกการ merge เองจนกว่าจะเป็นไปตามเงื่อนไขทั้งหมด บางทีมใช้ bors-ng หรือ Mergify — บอทที่ผสาน PR โดยอัตโนมัติหลังจากได้รับการอัปปรูฟทั้งหมดและผ่าน CI ซึ่งช่วยเร่งกระบวนการและตัดปัจจัยมนุษย์ออกจากการ merge

แนวทางสมัยใหม่คือ trunk-based development ที่มีสาขาอายุสั้น ใน workflow นี้ต้องได้รับการอัปปรูฟภายในไม่กี่ชั่วโมง ไม่เช่นนั้นงานจะถือว่าล้าสมัยและต้องซิงค์กับ main ใหม่ ทีมที่มีวัฒนธรรมการรีวิวเข้มแข็งจะพยายามให้เวลาอัปปรูฟไม่เกิน 4 ชั่วโมงทำงาน

ข้อผิดพลาดในการอัปปรูฟและวิธีหลีกเลี่ยง

ข้อผิดพลาดที่พบบ่อยที่สุด คือการอัปปรูฟแบบพิธีการโดยไม่ตรวจสอบโค้ดจริง ๆ เมื่อ PR ใหญ่หรือ deadline ใกล้เข้ามา ผู้รีวิวอาจกด Approve โดยไม่ลงรายละเอียดในการเปลี่ยนแปลง ซึ่งทำให้กระบวนการ code review ทั้งหมดไร้ค่า วิธีแก้ไข: ตั้งขีดจำกัดขนาดของ PR (ไม่เกิน 400 บรรทัด) และใช้เครื่องมือวิเคราะห์โค้ด (SonarQube, CodeClimate) สำหรับการตรวจสอบอัตโนมัติ

ข้อผิดพลาดที่สอง — การอัปปรูฟที่เข้มงวดเกินไป การคาดหวังโค้ดที่สมบูรณ์แบบจะบล็อกการพัฒนา ผู้รีวิวบางครั้งเรียกร้องให้แก้ไขข้อสังเกตด้านสไตล์ซึ่งไม่ส่งผลต่อคุณภาพ วิธีแก้ไข: แยกให้ชัดเจนระหว่างข้อสังเกตที่บังคับ (การบล็อก) กับข้อเสนอทางเลือก (ความคิดเห็น) GitHub อนุญาตให้ระบุอย่างชัดเจนว่าความคิดเห็นใดเป็นการบล็อกหรือไม่

ข้อผิดพลาดที่สาม — การอัปปรูฟโดยไม่ตรวจสอบ CI/CD แม้โค้ดจะดูถูกต้อง แต่ก็อาจคอมไพล์ไม่ผ่านหรือเทสต์ไม่ผ่าน Branch Protection ที่ตั้งค่าไว้จะบล็อกการ merge โดยอัตโนมัติเมื่อ CI เป็นสีแดง แต่บางทีมปิดการป้องกันนี้เพื่อความรวดเร็ว วิธีแก้ไข: ตรวจสอบสถานะ CI ก่อนอัปปรูฟเสมอ และไม่ควรอนุมัติ PR ที่มี pipeline เป็นสีแดง

  • การอัปปรูฟแบบพิธีการ — ไม่มีการตรวจสอบโค้ดจริง ๆ วิธีแก้ไข: ขีดจำกัด 400 บรรทัดต่อ PR
  • ความเข้มงวดเกินไป — การบล็อกเพราะข้อสังเกตด้านสไตล์ วิธีแก้ไข: แบ่งเป็น blocking และ optional
  • การเพิกเฉย CI — การอัปปรูฟเมื่อ pipeline เป็นสีแดง วิธีแก้ไข: ตรวจสอบสถานะการตรวจสอบเสมอ
  • การกำหนดให้ผู้เขียน — การอัปปรูฟโดยผู้เขียน PR วิธีแก้ไข: ตั้งค่า Branch Protection ต่อต้านผู้เขียน

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

การอัปปรูฟหรือแอปปรูฟ PR หมายความว่าอะไร?

การอัปปรูฟ — การอนุมัติ pull request ใน GitHub/GitLab หลัง code review โดยกดปุ่ม Approve ซึ่งหมายความว่าโค้ดได้รับการตรวจสอบแล้ว ตรงตามมาตรฐาน และพร้อมสำหรับการผสาน การอัปปรูฟเป็นเงื่อนไขบังคับสำหรับการ merge เข้าสู่สาขาที่ได้รับการป้องกันซึ่งมีการตั้งค่ากฎ Branch Protection

ต้องใช้การอัปปรูฟกี่ครั้งสำหรับ PR?

ขึ้นอยู่กับกฎของ repository มาตรฐานขั้นต่ำคือ การอัปปรูฟ 1 ครั้ง จากผู้รีวิวที่ไม่ใช่ผู้เขียน สำหรับส่วนประกอบที่สำคัญ (โมดูลการชำระเงิน, ความปลอดภัย) อาจต้องมีการอัปปรูฟ 2-3 ครั้ง จำนวนสามารถตั้งค่าได้ใน Branch Protection Rules ของ GitHub หรือ Approval Rules ของ GitLab

Approve กับ Request Changes ต่างกันอย่างไร?

Approve — โค้ดพร้อมสำหรับการผสาน ข้อสังเกตเป็นทางเลือก Request Changes — โค้ดมีปัญหาที่ต้องแก้ไขบังคับ PR จะถูกบล็อกจนกว่าจะมีการรีวิวซ้ำ เมื่อ Request Changes ไม่สามารถ merge ได้ เมื่อ Approve — ทำได้หลังผ่านการตรวจสอบ CI/CD

ผู้เขียนสามารถอัปปรูฟ PR ของตัวเองได้หรือไม่?

ไม่ได้ ผู้เขียนไม่สามารถอัปปรูฟ PR ของตัวเอง — สิ่งนี้ขัดกับหลักการรีวิวอิสระ GitHub บล็อกความเป็นไปได้นี้ในระดับอินเทอร์เฟซ แม้ว่าการตั้งค่า repository จะไม่ได้ห้าม การอัปปรูฟโดยผู้เขียนก็ไม่ถือว่ามีผล เพราะไม่มีการตรวจสอบโค้ดจากภายนอก

Dismiss stale reviews คืออะไร?

Dismiss stale review — ตัวเลือกใน Branch Protection ซึ่งจะยกเลิกการอัปปรูฟโดยอัตโนมัติเมื่อมีการเพิ่มคอมมิตใหม่ลงใน PR รับประกันว่าผู้รีวิวอนุมัติเวอร์ชันโค้ดปัจจุบัน หากไม่มีตัวเลือกนี้ ผู้เขียนสามารถแก้ไขโค้ดหลังการอัปปรูฟได้ และการเปลี่ยนแปลงจะเข้าสู่ main โดยไม่มีการตรวจสอบเพิ่มเติม

สรุป

  • อัปปรูฟ — การอนุมัติ pull request โดยผู้รีวิว ซึ่งอนุญาตให้ผสานเข้าสู่สาขาที่ได้รับการป้องกัน
  • GitHub/GitLab รองรับการรีวิวสามประเภท: Approve, Request Changes และ Comment โดยมีสถานะการบล็อกที่แตกต่างกัน
  • Branch Protection Rules ตั้งค่าจำนวนการอัปปรูฟขั้นต่ำและการรีเซ็ตอัตโนมัติเมื่อมีคอมมิตใหม่
  • CODEOWNERS กระจายขอบเขตความรับผิดชอบ: การอัปปรูฟของเจ้าของโค้ดเป็นสิ่งจำเป็นสำหรับไดเรกทอรีของเขา
  • Code review ก่อนการอัปปรูฟควรรวมถึงตรรกะ, เทสต์, ความปลอดภัย — ไม่ใช่แค่สไตล์
  • การอัปปรูฟแบบพิธีการ โดยไม่ตรวจสอบ — ข้อผิดพลาดหลัก วิธีแก้ไข: จำกัดขนาด PR ถึง 400 บรรทัด
  • pipeline CI/CD ควรเป็นสีเขียวก่อนการอัปปรูฟ แม้โค้ดจะดูถูกต้องก็ตาม

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม