วิธีใช้ Git กับแอปที่สร้างด้วย AI
หากต้องการใช้ Git กับแอปที่สร้างด้วย AI ให้เชื่อมโปรเจกต์กับ Git repository, commit ทุกครั้งที่การเปลี่ยนแปลงใช้ได้, เขียนข้อความสั้น ๆ หนึ่งบรรทัดว่าเปลี่ยนอะไร และเก็บความลับให้อยู่นอก Git ด้วย .gitignore สำหรับงานที่มีความเสี่ยง ให้ใช้ branch, pull ก่อนสั่ง AI อีกครั้งหากมีคนอื่นแก้โค้ด และเมื่อ AI ทำอะไรพัง ให้กลับไปยัง commit ที่ใช้ได้ล่าสุด แทนที่จะสั่งต่อทับลงไปบนความเสียหาย
Git คือระบบควบคุมเวอร์ชัน หรือประวัติของทุกเวอร์ชันที่บันทึกไว้ของโค้ดคุณ GitHub คือเว็บไซต์ที่เก็บ Git repository ไว้บนอินเทอร์เน็ต หากสองอย่างนี้ยังใหม่สำหรับคุณ ให้เริ่มจาก GitHub คืออะไร คู่มือนี้พูดถึงนิสัยที่ทำให้ Git มีประโยชน์ เมื่อ AI เป็นคนเขียนโค้ดส่วนใหญ่
ทำไม Git ถึงสำคัญกว่าเดิมเมื่อใช้ AI
AI หนึ่งเทิร์นแก้ไฟล์ได้ถึงยี่สิบไฟล์ ซึ่งรวดเร็วมาก แต่ก็หมายความว่าคำสั่งเพียงครั้งเดียวอาจทำให้สิ่งที่คุณทดสอบไว้เมื่อวานพังไปโดยเงียบ ๆ Git ให้สิ่งต่อไปนี้:
- ทางย้อนกลับ เวอร์ชันใดก็ตามที่ถูก commit ไว้สามารถกู้คืนได้
- บันทึกว่าอะไรเปลี่ยนไป คุณดูได้ว่าคำสั่งแต่ละครั้งแตะไฟล์และบรรทัดใดบ้าง
- สำเนาที่อยู่นอกเครื่องมือสร้างแอป โค้ดของคุณอยู่ในที่ที่คุณควบคุมได้
- การส่งต่อที่เป็นมาตรฐาน นักพัฒนา ผู้ให้บริการโฮสต์ หรือเครื่องมืออื่นทำงานจาก Git repository ได้ทั้งหมด
ขั้นที่ 1: เชื่อมต่อ repository
สร้าง repository (ปกติเป็นแบบ private) บน GitHub หรือบริการที่คล้ายกัน แล้วเชื่อมโปรเจกต์ของคุณเข้ากับ repository นั้น เครื่องมือสร้างแอปด้วย AI ส่วนใหญ่ที่รองรับ Git ทำเรื่องนี้ผ่านหน้าตั้งค่าที่มีปุ่ม “Connect GitHub” ถ้าเครื่องมือของคุณไม่มี คุณก็ส่งออกโค้ดแล้ว push เองได้ หรือขอให้นักพัฒนาตั้งค่าให้ครั้งเดียว
ก่อน push ครั้งแรก ให้ตรวจว่า repository ไม่มีสิ่งที่ไม่ควรอยู่ในนั้น:
ตรวจไฟล์ .gitignore ให้แน่ใจว่ามีการยกเว้น .env, node_modules, โฟลเดอร์ build output และไฟล์ใดก็ตามที่มีความลับ บอกฉันว่าคุณเพิ่มอะไรเข้าไปบ้าง
ขั้นที่ 2: commit ทุกครั้งที่งานใช้ได้
commit คือสแน็ปช็อตที่บันทึกไว้พร้อมข้อความกำกับ นิสัยที่สำคัญที่สุดคือ commit เมื่อบางอย่างใช้ได้ ก่อนที่จะขอสิ่งต่อไป
- สั่งให้เปลี่ยนแปลงทีละหนึ่งอย่าง
- ตรวจสอบใน preview
- ถ้าใช้ได้ ให้ commit (หรือ sync) พร้อมข้อความ
- แล้วค่อยไปต่อ
commit เล็ก ๆ หมายความว่าเมื่อมีอะไรพัง คุณจะรู้ว่าการเปลี่ยนแปลงไหนเป็นต้นเหตุ และการย้อนกลับจะไม่ทิ้งงานอื่นที่คุณทำไว้ไปด้วย
ขั้นที่ 3: เขียนข้อความที่อ่านรู้เรื่องในภายหลัง
ข้อความที่ดีบอกว่าอะไรเปลี่ยนและเพราะอะไร ในหนึ่งบรรทัด:
- ดี:
Add CSV export to the orders page(เพิ่มการส่งออก CSV ในหน้าคำสั่งซื้อ) - ดี:
Fix booking form rejecting times after 6pm(แก้ฟอร์มการจองที่ไม่ยอมรับเวลาหลัง 18:00) - ใช้ไม่ได้:
update,changes,fix stuff
คุณสามารถให้ AI เขียนข้อความให้ได้:
สรุปการเปลี่ยนแปลงตั้งแต่ commit ล่าสุดเป็นหนึ่งบรรทัด ขึ้นต้นด้วยคำกริยา และยาวไม่เกิน 70 ตัวอักษร
ขั้นที่ 4: ใช้ branch สำหรับงานที่มีความเสี่ยง
branch คือเส้นทางการทำงานแยกต่างหาก คุณลองทำบางอย่างบน branch ได้ และถ้าไม่เวิร์ก ก็ทิ้งมันไปโดยไม่กระทบเวอร์ชันหลัก
ใช้ branch เมื่อ:
- การเปลี่ยนแปลงมีขนาดใหญ่ (เช่น ออกแบบใหม่ทั้งหมด ขั้นตอนการจ่ายเงินใหม่ หรือการเปลี่ยนฐานข้อมูล)
- มีคนอื่นกำลังทำงานกับแอปเดียวกัน
- คุณต้องการให้มีคนตรวจการเปลี่ยนแปลงก่อนขึ้นใช้งานจริง
เมื่องานเสร็จและทดสอบแล้ว จะถูก merge กลับเข้าสู่ branch หลัก บน GitHub การทำแบบนี้มักทำผ่าน pull request ซึ่งเป็นหน้าที่แสดงการเปลี่ยนแปลงให้ตรวจสอบ หากเครื่องมือของคุณ sync ได้แค่ branch เดียว นักพัฒนาสามารถจัดการ branch ฝั่ง GitHub ให้ได้
ขั้นที่ 5: ย้อนกลับอย่างปลอดภัย
เมื่อคำสั่งหนึ่งทำให้แอปพัง ให้ต้านแรงกระตุ้นที่จะสั่งต่ออีกห้าครั้งทับลงไป ให้กลับไปยังเวอร์ชันที่ใช้ได้ล่าสุดแล้วลองใช้คำสั่งที่ชัดเจนกว่า
- ในเครื่องมือสร้างแอป: ใช้ฟีเจอร์ checkpoint หรือ restore ถ้ามี
- ใน Git:
git revertจะสร้าง commit ใหม่ที่ยกเลิก commit เก่า โดยประวัติยังอยู่ครบ เป็นตัวเลือกที่ปลอดภัยเมื่อมีคนอื่นดึงโค้ดนั้นไปแล้ว - หลีกเลี่ยง
git push --forceบน branch ที่ใช้ร่วมกัน เว้นแต่คุณจะรู้แน่ชัดว่าทำไม เพราะมันเขียนประวัติใหม่ให้ทุกคน
หากไม่แน่ใจ ให้ถามว่า:
การเปลี่ยนแปลงล่าสุดทำให้หน้าเข้าสู่ระบบพัง แสดงให้ฉันดูว่ามีไฟล์ใดถูกแก้ไขเมื่อเทียบกับ commit ก่อนหน้า และอธิบายว่าแต่ละการเปลี่ยนแปลงทำอะไร ยังไม่ต้องแก้อะไรตอนนี้
ขั้นที่ 6: pull ก่อนสั่งงาน
หากนักพัฒนาหรือเครื่องมืออื่นแก้โค้ดบน GitHub เครื่องมือสร้างแอปด้วย AI ของคุณจะไม่รู้จนกว่าคุณจะ pull การเปลี่ยนแปลงเหล่านั้นเข้ามา การสั่งงานบนโค้ดเก่าจะทำให้เกิดความขัดแย้งและงานที่เสียหาย
- pull ทุกครั้งที่เริ่มทำงานในแต่ละรอบ
- ตกลงกันว่าใครแก้ส่วนไหน และหลีกเลี่ยงการที่สองฝ่ายแก้ไฟล์เดียวกันในเวลาเดียวกัน
- หากเกิด merge conflict (การเปลี่ยนแปลงสองแบบที่แก้บรรทัดเดียวกัน) ให้ขอให้นักพัฒนาหรือ AI แก้ไขและอธิบายว่าเลือกอะไรและเพราะอะไร
ตัวอย่างคำสั่ง
ก่อนเริ่ม: มีอะไรเปลี่ยนไปใน repository ตั้งแต่รอบการทำงานล่าสุดของฉันบ้าง สรุป commit ให้หน่อย
ทำการเปลี่ยนแปลงถัดไปแยกต่างหาก: เพิ่มปุ่ม “Duplicate” ให้แต่ละใบแจ้งหนี้ อย่าเปลี่ยนอย่างอื่น เพื่อให้ฉัน commit แยกได้
ตรวจว่าไม่มี API key รหัสผ่าน หรือไฟล์ .env ถูกติดตามใน Git รวมถึงใน commit เก่าด้วย รายงานเฉพาะชื่อไฟล์ ไม่ต้องใส่ค่า
ข้อผิดพลาดที่พบบ่อย
- commit ความลับ เมื่อ key อยู่ในประวัติ Git แล้ว มันจะถูกเปิดเผย แม้จะลบไฟล์ไปแล้ว ให้เปลี่ยน key ใหม่
- commit ใหญ่ก้อนเดียวต่อสัปดาห์ คุณจะยกเลิกการเปลี่ยนแปลงหนึ่งอย่างไม่ได้ โดยไม่ยกเลิกทั้งหมดไปด้วย
- ข้อความอย่าง “update” ประวัติจะใช้ค้นหาว่าอะไรพังไม่ได้เลย
- สั่งงานบนโค้ดที่ไม่ล่าสุด ให้ pull ก่อนเมื่อมีคนอื่นกำลังแก้โค้ด
- force-push เพื่อแก้ข้อผิดพลาด อาจลบงานของคนอื่นได้ ให้ใช้ revert แทน
- commit
node_modulesมันมีขนาดใหญ่มากและถูกสร้างใหม่จาก lock file อยู่แล้ว
รายการตรวจสอบ
- โปรเจกต์เชื่อมต่อกับ repository แบบ private
-
.gitignoreยกเว้น.env,node_modules, build output และความลับ - ฉัน commit หลังทุกการเปลี่ยนแปลงที่ใช้ได้
- ข้อความ commit บอกว่าอะไรเปลี่ยนในหนึ่งบรรทัด
- การเปลี่ยนแปลงที่ใหญ่หรือเสี่ยงอยู่บน branch และผ่านการตรวจสอบ
- ฉัน pull ก่อนสั่งงาน เมื่อมีคนอื่นแก้โค้ด
- ฉันย้อนกลับด้วย checkpoint หรือ
git revertไม่ใช้ force-push - key ใดก็ตามที่เคยถูก commit ได้ถูกเปลี่ยนแล้ว
Git บน Mythex
Mythex บันทึก git checkpoint หลังทุกเทิร์นที่ agent ทำงานสำเร็จ และ Revert to this point จะย้อนโปรเจกต์กลับไปยังจุดนั้น ซึ่งเป็นการย้อนกลับฝั่งเครื่องมือสร้างแอปที่อธิบายไว้ในขั้นที่ 5 ดู Iterate without rebuilding
ใน Pro GitHub sync เชื่อมต่อ repository จากการตั้งค่าโปรเจกต์ เพื่อให้คุณ push และ pull ได้ และ export ดาวน์โหลดโปรเจกต์โดยไม่รวม secret และ node_modules ดู GitHub, export, and import การเชื่อม GitHub ก่อนส่งมอบโปรเจกต์ให้นักพัฒนาจะทำให้การส่งต่อง่ายขึ้นมาก ดู วิธีทำงานกับนักพัฒนาในแอปที่สร้างด้วย AI และ วิธี export และ self-host แอปที่สร้างด้วย AI
คำถาม
ถ้าเครื่องมือสร้างแอปด้วย AI มี checkpoint ยังต้องใช้ Git อยู่ไหม
Checkpoint ช่วยให้ย้อนกลับได้ระหว่างที่สร้างแอป ส่วน Git ให้สำเนาโค้ดที่อยู่นอกเครื่องมือสร้างแอป ประวัติที่คนอื่นอ่านได้ และวิธีมาตรฐานให้นักพัฒนาหรือเครื่องมืออื่นทำงานกับโค้ดชุดเดียวกัน ถ้าแอปของคุณสำคัญ ให้ใช้ทั้งสองอย่าง
ควร commit บ่อยแค่ไหนเมื่อสร้างงานกับ AI
หลังทุกการเปลี่ยนแปลงที่ใช้ได้ มักจะเป็นหลังคำสั่งที่สำเร็จแต่ละครั้งหรือกลุ่มคำสั่งเล็ก ๆ commit ที่เล็กทำให้หาและยกเลิกการเปลี่ยนแปลงที่ทำให้บางอย่างพังได้ง่ายขึ้น
อะไรบ้างที่ไม่ควร commit ลง Git
API key รหัสผ่าน ไฟล์ .env ที่มีค่าจริง และโฟลเดอร์ dependency ที่ติดตั้งไว้ เช่น node_modules เพิ่มสิ่งเหล่านี้ลงใน .gitignore ก่อน commit แรก และเปลี่ยน key ใหม่ทุกตัวที่เคยถูก commit ไปแล้ว
แก้โค้ดบน GitHub แล้วยังสร้างงานต่อกับ AI ได้ไหม
ได้ ถ้าเครื่องมือสร้างแอปของคุณดึงการเปลี่ยนแปลงจาก GitHub ได้ ให้ pull ก่อนสั่ง AI อีกครั้ง เพื่อให้ AI ทำงานกับโค้ดล่าสุด และหลีกเลี่ยงการให้ทั้งสองฝ่ายแก้ไฟล์เดียวกันพร้อมกัน