ขั้นตอนการทำงานของ Git·

ใช้ GitHub Desktop เพื่อทำให้การอัปเดต FiveM ง่ายขึ้นและตรวจพบทุกการเปลี่ยนแปลง

คู่มือแบบไม่ต้องใช้คำสั่งสำหรับเจ้าของเซิร์ฟเวอร์ FiveM: ใช้ GitHub Desktop เพื่อดูว่ามีการเปลี่ยนแปลงอะไรบ้างในการอัปเดต, รักษาการตั้งค่าที่คุณแก้ไขไว้เอง และย้อนกลับได้ทันทีเมื่อมีบางอย่างผิดพลาด

บทนำ

เจ้าของเซิร์ฟเวอร์ทุกคนย่อมเข้าใจความรู้สึกนี้ เมื่อมีทรัพยากรเวอร์ชันใหม่ออกมา และ Changelog ระบุว่า "ให้แทนที่โฟลเดอร์ /config/framework" แล้วคุณก็ต้องชะงัก — เพราะคุณใช้เวลาหลายชั่วโมงในการปรับแต่งไฟล์เหล่านั้น และคุณไม่รู้เลยว่าการอัปเดตนั้นเข้าไปแตะต้องส่วนไหนบ้าง คุณจะเขียนทับแล้วงานที่ทำไว้หายไปดีไหม? จะข้ามโฟลเดอร์นั้นไปแล้วเสี่ยงทำให้สคริปต์พังดีไหม? หรือจะคัดลอกบรรทัดไปมาด้วยตัวเองแล้วหวังว่าจะไม่พลาดอะไรไปดีไหม?

มีวิธีที่ดีกว่านั้นมาก — และคุณไม่จำเป็นต้องแตะต้องคำสั่งใดๆ เลย ด้วยแอปฟรีที่ชื่อว่า GitHub Desktop คุณสามารถ ดูได้อย่างชัดเจนว่ามีการเปลี่ยนแปลงอะไรบ้างในการอัปเดตใดๆ, รักษาการปรับแต่งของคุณเองให้ปลอดภัย, และ ย้อนกลับได้ภายในไม่กี่วินาที ทั้งหมดนี้ผ่านอินเทอร์เฟซแบบคลิกที่เรียบง่าย

Git คืออะไร และ GitHub Desktop คืออะไร?

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

GitHub Desktop เป็นแอปพลิเคชันแบบ Visual ที่ใช้งานฟรี ซึ่งเปลี่ยน Git ให้กลายเป็นปุ่มที่ใช้งานง่าย ไม่ต้องใช้หน้าจอ Terminal สีดำ ไม่ต้องจำคำสั่ง — มีเพียงหน้าต่างที่ชัดเจนซึ่งแสดงให้คุณเห็นว่ามีอะไรเปลี่ยนแปลงไปบ้าง และช่วยให้คุณสามารถ commit, undo และ merge ได้ด้วยการคลิกเพียงครั้งเดียว

สำหรับเซิร์ฟเวอร์ FiveM โฟลเดอร์ที่คุณติดตามคือไดเรกทอรี resources ของคุณ (หรือสคริปต์เดี่ยวภายในนั้น) Git จะเปลี่ยน "ฉันคิดว่าฉันได้เปลี่ยนบางอย่างในนี้เมื่อไม่กี่สัปดาห์ก่อน" ให้กลายเป็น "แสดงให้ฉันเห็นอย่างแม่นยำว่ามีอะไรเปลี่ยนแปลงไปบ้างระหว่างเดือนที่แล้วกับวันนี้"

GitHub Desktop ทำงานแบบ ครบถ้วนในเครื่องของคุณเอง คุณ ไม่ จำเป็นต้องอัปโหลดอะไรลงอินเทอร์เน็ต — ทุกฟีเจอร์ในคู่มือนี้ทำงานแบบออฟไลน์บนเครื่องของคุณเองหรือ VPS หากคุณชอบแอปอื่น? Sourcetree, GitKraken, Fork, และแผง Source Control ที่มาพร้อมกับ VS Code ต่างก็ทำงานแบบเดียวกัน; แนวคิดด้านล่างนี้สามารถนำไปใช้ได้ทันที

ทำไมสิ่งนี้ถึงสมบูรณ์แบบสำหรับการอัปเดต Resource

การอัปเดตสคริปต์ด้วยวิธีแบบดั้งเดิมหมายถึงการทำงานแบบไม่เห็นภาพ Git มอบพลังพิเศษสามอย่างให้แก่คุณ:

  1. การตรวจจับการเปลี่ยนแปลง — หลังจากใส่เวอร์ชันใหม่ลงไป GitHub Desktop จะไฮไลต์ทุกไฟล์ที่เปลี่ยนและทุกบรรทัดที่เปลี่ยนแปลง Changelog จะบอกคุณว่าควรเปลี่ยน โฟลเดอร์ไหนบ้าง; Git จะแสดงให้คุณเห็นว่า อะไรที่เปลี่ยนไปจริงๆ เพื่อให้คุณมั่นใจได้
  2. การปรับแต่งที่ปลอดภัย — การแก้ไขของคุณจะถูกเก็บไว้ใน commit เมื่อการอัปเดตจากผู้ขายมีการแตะไฟล์เดียวกัน Git สามารถ merge การเปลี่ยนแปลงทั้งสองชุดเข้าด้วยกัน โดยเก็บทั้งส่วนของคุณ และ ส่วนของพวกเขาไว้
  3. การย้อนกลับทันที — หากการอัปเดตทำให้เซิร์ฟเวอร์ของคุณพัง คุณอยู่ห่างจากสถานะเดิมที่คุณมีเมื่อห้านาทีก่อนเพียงแค่คลิกเดียว ไม่ต้องตื่นตระหนกกับคำถามที่ว่า "ฉันเอาไฟล์สำรองไว้ที่ไหนนะ"
สิ่งนี้จับคู่ได้อย่างสมบูรณ์แบบกับทรัพยากรที่ป้องกันด้วยระบบ escrow อย่าง Sky-Systems โฟลเดอร์ source/ ที่ถูกเข้ารหัสไว้จะไม่มีการเปลี่ยนแปลงใดๆ ในฝั่งของคุณ ในขณะที่ทุกอย่างที่คุณแก้ไขจริงจะอยู่ในโฟลเดอร์ config/ ที่เป็นข้อความธรรมดา Git สามารถติดตาม config/ ได้อย่างยอดเยี่ยม ซึ่งเป็นจุดที่การปรับแต่งของคุณและการอัปเดตจากผู้ขายมาบรรจบกันพอดี

การตั้งค่าครั้งเดียวด้วย GitHub Desktop

คุณทำสิ่งนี้เพียงครั้งเดียวต่อหนึ่งเซิร์ฟเวอร์

ติดตั้ง GitHub Desktop

ดาวน์โหลดและติดตั้งจาก desktop.github.com คุณสามารถข้ามหรือปิดหน้าต่างแจ้งเตือนการลงชื่อเข้าใช้ได้ — บัญชีออนไลน์จำเป็นต้องใช้ก็ต่อเมื่อคุณต้องการสำรองข้อมูลไปยัง GitHub เท่านั้น ซึ่งคู่มือนี้ ไม่จำเป็นต้องใช้

เพิ่มโฟลเดอร์ทรัพยากรของคุณ

ในแถบเมนู ให้คลิก File → Add local repository จากนั้น Choose… และเลือกโฟลเดอร์ resourcesของคุณ

GitHub Desktop จะตรวจพบว่ายังไม่มีการติดตามและแสดงข้อความ: "This directory does not appear to be a Git repository." ให้คลิกที่ลิงก์ "create a repository" ที่ปรากฏขึ้น ในหน้าถัดไป ให้ปล่อยค่าเริ่มต้นไว้แล้วคลิก Create repository

ปกป้องข้อมูลความลับของคุณ

FiveMเซิร์ฟเวอร์เก็บข้อมูลที่ละเอียดอ่อนซึ่งต้อง ไม่ถูกบันทึกลงในประวัติของคุณ ใน GitHub Desktop ให้เปิด Repository → Repository settings → Ignored files และเพิ่มกฎดังนี้:

# Never track secrets
**/*.env
**/secrets.lua
server.cfg

# Caches, logs, build output
**/cache/
**/logs/
**/.DS_Store

คุณยังสามารถคลิกขวาที่ไฟล์ใดก็ได้ในรายการ Changes และเลือก Ignore file (หรือ Ignore all files of this type) — GitHub Desktop จะเพิ่มมันลงใน .gitignoreให้คุณ

ห้าม commit ข้อมูลสำหรับยืนยันตัวตนโดยเด็ดขาด รหัสผ่านฐานข้อมูล, sv_licenseKey ของคุณ, Tebex secrets, Discord tokens และ webhook URLs ต้องไม่ถูกเก็บไว้ใน Git ให้เพิ่มสิ่งเหล่านี้ลงในรายการ ignore ก่อนการ commit ครั้งแรกของคุณ — เมื่อบางอย่างถูก commit ไปแล้ว มันจะถูกบันทึกไว้ในประวัติการทำงานตลอดไป

สร้าง Snapshot แรกของคุณ

สลับไปที่แท็บ Changes (แถบด้านซ้าย) ไฟล์ทุกไฟล์จะปรากฏในรายการ ในช่อง Summary ที่มุมซ้ายล่าง ให้พิมพ์ข้อความบางอย่างเช่น Baseline: working server before updates จากนั้นคลิก Commit to main

เรียบร้อย ตอนนี้คุณมีระบบสำรองความปลอดภัยให้กับเซิร์ฟเวอร์ทั้งหมดของคุณแล้ว

ห้ามเผยแพร่ทรัพยากรที่ซื้อมา หาก GitHub Desktop แสดงปุ่มสีฟ้าที่เขียนว่า "Publish repository" สำหรับสคริปต์ที่มีลิขสิทธิ์หรือมีการป้องกันแบบ escrow ให้ปล่อยไว้เฉยๆ การอัปโหลดไฟล์เหล่านั้นไปยัง repository สาธารณะถือเป็นการละเมิดลิขสิทธิ์และเป็นการเปิดเผยเนื้อหาที่ต้องชำระเงิน ให้เก็บ repository ไว้แบบ local only เท่านั้น

ขั้นตอนการอัปเดต

นี่คือขั้นตอนปกติที่คุณต้องทำซ้ำในทุกๆ การอัปเดต โดยใช้เวลาประมาณหนึ่งนาที

Commit สถานะปัจจุบันของคุณ

เปิด GitHub Desktop และตรวจสอบที่แท็บ Changes หากมีรายการใดปรากฏอยู่ ให้ทำการ commit ก่อนด้วยสรุปข้อความเช่น Pre-update snapshot เพื่อให้การอัปเดตดูชัดเจน หากรายการว่างเปล่า แสดงว่าคุณพร้อมแล้ว

ลงเวอร์ชันใหม่

หยุดการทำงานของเซิร์ฟเวอร์ จากนั้นแตกไฟล์ทรัพยากรเวอร์ชันใหม่ ทับลงไป บนไฟล์เดิมเพื่อเขียนทับ — ให้ทำตามที่ changelog ระบุไว้ทุกประการ (ตัวอย่างเช่น "แทนที่โฟลเดอร์ /config/framework") ไม่ต้องกังวลเรื่องข้อมูลสูญหาย เพราะสถานะก่อนหน้าของคุณถูก commit ไว้อย่างปลอดภัยแล้ว

ดูสิ่งที่เปลี่ยนแปลงอย่างชัดเจน

กลับไปที่ GitHub Desktop และเปิดแท็บ Changes นี่คือช่วงเวลาสำคัญ: ไฟล์ทุกไฟล์ที่การอัปเดตมีการแตะต้องจะถูกแสดงรายการไว้ และการคลิกที่ไฟล์จะแสดงการเปลี่ยนแปลงของไฟล์นั้นแบบ ทีละบรรทัด — บรรทัดที่ถูกลบจะเป็นสีแดง บรรทัดที่เพิ่มเข้ามาจะเป็นสีเขียว

ตอนนี้คุณสามารถ อ่าน ได้อย่างแม่นยำว่าการอัปเดตได้ทำอะไรลงไปบ้าง — ไม่ว่าจะเป็นตัวเลือกคอนฟิกใหม่, ค่าเริ่มต้นที่เปลี่ยนไป หรือการเปลี่ยนชื่อคีย์ — แทนที่จะเป็นการคาดเดา

กวาดสายตามองดูรายการไฟล์และเปรียบเทียบกับ changelog หาก changelog ระบุว่ามีเพียง config/framework และ config/banking ที่เปลี่ยนไป โฟลเดอร์เหล่านั้นควรจะเป็นสิ่งที่คุณเห็นที่นี่ หากมีอะไรที่ไม่คาดคิด ควรตรวจสอบให้ละเอียดก่อนที่คุณจะทำการ commit

ตรวจสอบการปรับแต่งของคุณให้สอดคล้อง

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

สำหรับการตรวจสอบให้สอดคล้องแบบอัตโนมัติทั้งหมด โปรดดู Pro Tip ด้านล่าง

Commit การอัปเดต

เมื่อทุกอย่างดูถูกต้องและเซิร์ฟเวอร์ของคุณเริ่มทำงานได้อย่างราบรื่น ให้กลับไปที่แท็บ Changes ใส่สรุปรายการ เช่น Update sky_base to 1.21.0 และคลิก Commit to main

ตอนนี้คุณจะมีจุดเช็คพอยต์ที่มีป้ายกำกับซึ่งคุณสามารถย้อนกลับมาได้เสมอ


การย้อนกลับเมื่อมีบางอย่างผิดพลาด

การอัปเดตทำงานผิดปกติ? ตั้งสติไว้ — GitHub Desktop มีตัวเลือกให้คุณหลายระดับ ตั้งแต่แบบเบาไปจนถึงแบบล้างบาง

ยกเลิกการเปลี่ยนแปลงที่ยังไม่ได้ commit ในแท็บ Changes ให้เลือกไฟล์ (หรือเลือกทั้งหมด) คลิกขวา แล้วเลือก Discard Changes / Discard All Changes วิธีนี้จะคืนค่าไฟล์กลับไปเป็นเหมือนตอนที่คุณ commit ครั้งล่าสุด

ย้อนกลับไปยังสแนปชอตก่อนหน้า เปิดแท็บ History (ประวัติ) ในแถบด้านข้างซ้ายเพื่อดูทุกสแนปชอตที่คุณได้สร้างไว้

  • หากต้องการ ยกเลิกการอัปเดตอย่างปลอดภัย โดยที่ยังคงประวัติที่สะอาดไว้ ให้คลิกขวาที่ commit ที่ผิดพลาดแล้วเลือก Revert Changes in Commit วิธีนี้จะสร้าง commit แบบ "ยกเลิก" ใหม่ขึ้นมา — จะไม่มีข้อมูลใดสูญหาย
  • หากต้องการ ย้อนกลับ ไปยังสถานะก่อนหน้าอย่างครบถ้วน ให้คลิกขวาที่สแนปชอตที่คุณต้องการแล้วเลือก Reset to commit
Reset to commit จะย้อนโปรเจกต์ของคุณไปยังสแนปชอตนั้น โปรดทำการ commit หรือ stash สิ่งที่คุณยังต้องการเก็บไว้ก่อน หากไม่แน่ใจ แนะนำให้ใช้ Revert Changes in Commit — ซึ่งเป็นตัวเลือกแบบไม่ทำลายข้อมูลเดิม

เก็บการเปลี่ยนแปลงของคุณไว้ชั่วคราว — สะดวกสำหรับการทดสอบอัปเดตด้วยสถานะที่สะอาด แล้วจึงนำงานของคุณกลับมา ให้คลิกขวาที่หัวข้อ Changed files แล้วเลือก Stash All Changes หากต้องการนำกลับมา ให้เลือก Stashed Changes ในแถบด้านข้างแล้วคลิก Restore

GitHub Desktop จะเก็บ stash ได้เพียง หนึ่ง รายการต่อครั้ง — การ stash อีกครั้งจะแทนที่รายการก่อนหน้า ใช้สำหรับช่วงเวลาสั้นๆ ชั่วคราว และใช้ commit สำหรับสิ่งใดก็ตามที่คุณต้องการเก็บไว้

เคล็ดลับระดับโปร: การรวมอัปเดตจากผู้พัฒนาแบบอัตโนมัติ

เบื่อไหมกับการต้องมานั่งแก้ไขไฟล์ config ด้วยตัวเองทุกครั้งหลังการอัปเดต? GitHub Desktop สามารถทำให้คุณได้โดยใช้ three-way merge

แนวคิดคือ: เก็บ branch หนึ่งไว้สำหรับ ไฟล์ต้นฉบับจากผู้พัฒนา และอีก branch หนึ่งสำหรับ การแก้ไขของคุณที่ซ้อนทับอยู่

สร้าง Vendor Branch

คลิกที่เมนูแบบดรอปดาวน์ Current Branch ที่ด้านบน จากนั้นเลือก New Branch และตั้งชื่อว่า vendor Branch นี้จะใช้สำหรับเก็บไฟล์ต้นฉบับจากผู้พัฒนาที่ไม่มีการแก้ไขเท่านั้น

บันทึกทุกการปล่อยเวอร์ชันในสาขา Vendor

เมื่อมีเวอร์ชันใหม่ออกมา ให้สลับไปที่สาขา vendor (จากเมนูเลือก Current Branch) แตกไฟล์ release ที่ ยังไม่มีการแก้ไข ลงทับไป แล้วทำการ commit พร้อมสรุปเนื้อหาอย่างเช่น Vendor sky_base 1.21.0

รวมการอัปเดตเข้ากับการแก้ไขของคุณ

สลับกลับมาที่สาขา main ของคุณ (จากเมนูเลือก Current Branch) จากนั้นเปิด Branch → Merge into current branch… เลือก vendor แล้วคลิก merge

GitHub Desktop จะรวมการเปลี่ยนแปลงจาก vendor เข้ากับการปรับแต่งของคุณโดยอัตโนมัติ ระบบจะหยุดถามคุณก็ต่อเมื่อการอัปเดตมีการเปลี่ยนแปลง ในบรรทัดเดียวกันเป๊ะๆ กับที่คุณปรับแต่งไว้ — และจะแสดงหน้าจอที่ชัดเจนเพื่อให้คุณแก้ไขจุดเหล่านั้น ส่วนจุดอื่นๆ ทั้งสองชุดการเปลี่ยนแปลงจะถูกเก็บไว้ให้คุณ

นี่คือเทคนิคเดียวกับที่ทีมงานมืออาชีพใช้เพื่อติดตามไลบรารีต้นทางโดยไม่ทำให้การแก้ไขในเครื่องสูญหาย — และมันใช้งานได้ดีเช่นกันสำหรับเซิร์ฟเวอร์ของคุณ


ต้องการใช้ Command Line หรือไม่?

หากคุณคุ้นเคยกับการใช้ terminal ขั้นตอนการทำงานทั้งหมดข้างต้นสามารถเทียบเคียงได้ด้วยคำสั่งเพียงไม่กี่คำสั่ง:

# One-time setup (run inside your resources folder)
git init
git add .
git commit -m "Baseline: working server before updates"

# Each update
git add . && git commit -m "Pre-update snapshot"   # snapshot first
# ...drop in the new release, overwriting files...
git status            # which files changed
git diff --stat       # a compact per-file summary
git diff              # full line-by-line changes
git add . && git commit -m "Update sky_base to 1.21.0"

# Rolling back
git restore <file>    # undo changes to one file
git restore .         # undo all uncommitted changes
git log --oneline     # find a snapshot
git reset --hard <id> # rewind to it (destructive)
git stash / git stash pop   # shelve and restore temporarily

แนวทางปฏิบัติที่ดีที่สุด

  • Commit ก่อนการอัปเดตทุกครั้ง การทำ snapshot ใช้เวลาเพียงสองวินาทีแต่ช่วยประหยัดเวลาได้หลายชั่วโมง
  • เขียนสรุปให้ชัดเจน Update sky_base to 1.21.0 ดีกว่า stuff เมื่อคุณต้องตรวจสอบประวัติย้อนหลังในอีกหกเดือนข้างหน้า
  • ตั้งค่า ignore สำหรับข้อมูลความลับ ข้อมูลประจำตัว (Credentials) ไม่ควรอยู่ในประวัติเวอร์ชัน
  • Commit หลังจาก การบูตที่สะอาดแล้ว ไม่ใช่ก่อน ให้ติดป้ายกำกับ snapshot ว่า "good" ก็ต่อเมื่อเซิร์ฟเวอร์รันได้จริงเท่านั้น
  • ติดตามทั้ง resources โฟลเดอร์ของคุณในหนึ่ง repository ด้วยวิธีนี้ การ rollback เพียงครั้งเดียวสามารถกู้คืนจากการอัปเดตที่ผิดพลาดของ ทุก script ได้
  • เก็บไว้เป็นแบบ local ห้ามเผยแพร่ทรัพยากรที่มีลิขสิทธิ์หรือทรัพยากรที่ป้องกันด้วยระบบ escrow ลงใน public repository

บทสรุป

การอัปเดตเซิร์ฟเวอร์ FiveM ไม่จำเป็นต้องหมายถึงการคาดเดา การสูญเสียการปรับแต่งส่วนตัว และการไล่หาไฟล์สำรองอย่างลนลานอีกต่อไป ด้วยการตั้งค่า GitHub Desktop เพียงครั้งเดียวและขั้นตอนที่ใช้เวลาเพียงหนึ่งนาที คุณสามารถ เห็นทุกการเปลี่ยนแปลงที่การอัปเดตทำ, รักษาการแก้ไขของคุณไว้ได้อย่างครบถ้วน, และ ย้อนกลับความผิดพลาดใดๆ ได้ทันที — ทั้งหมดนี้โดยไม่ต้องพิมพ์คำสั่งแม้แต่คำเดียว

เมื่อไหร่ก็ตามที่ Changelog บอกให้คุณเปลี่ยนโฟลเดอร์ คุณจะทำมันได้อย่างมั่นใจ — เพราะ GitHub Desktop จะแสดงให้คุณเห็นว่ามีอะไรเปลี่ยนไปบ้างในทุกๆ ครั้ง