บทนำสู่ Git
เผยแพร่แล้ว: 2022-06-30ไม่ว่าคุณจะกำลังสร้างเว็บไซต์ใหม่ พัฒนาธีมหรือปลั๊กอิน หรือตั้งค่ากลยุทธ์การผสานรวมและการปรับใช้ขั้นสูงอย่างต่อเนื่อง คุณก็จะทำงานกับโค้ดได้
ภายใต้ทุกเว็บไซต์ มีการรันโค้ด — ไม่ว่าคุณจะใช้ WordPress, WooCommerce, Drupal, Magento, NextJS หรือแม้แต่ HTML ที่เขียนด้วยมือ มีชุดของไฟล์ที่จำเป็นในการทำให้แต่ละหน้าแสดงผลและแสดงเนื้อหาไปทั่วโลก
สิ่งที่คุณค้นพบอย่างรวดเร็วคือคุณต้องการวิธีติดตามการเปลี่ยนแปลงโค้ดเมื่อเวลาผ่านไป คุณจำเป็นต้องรู้ว่าการเปลี่ยนแปลงใดในไฟล์เวอร์ชันล่าสุด และใครเป็นผู้ทำการเปลี่ยนแปลงแต่ละรายการ
นี่คือที่มาของ Git อ่านต่อเพื่อเรียนรู้เกี่ยวกับ Git การทำงานกับที่เก็บ Git ระยะไกล และอื่นๆ
ทำความเข้าใจ Git
Git คือระบบควบคุมเวอร์ชันที่ช่วยให้นักพัฒนาและใครก็ตามที่ทำงานกับไฟล์ สามารถสร้างและจัดเก็บเวอร์ชันของการเปลี่ยนแปลงได้อย่างง่ายดาย ดูประวัติของการเปลี่ยนแปลงเหล่านั้น และแบ่งปันการเปลี่ยนแปลงระหว่างอุปกรณ์และระบบ ทั้งหมดนี้พร้อมให้วิธีการ เพื่อยกเลิกการเปลี่ยนแปลงในกรณีที่มีสิ่งผิดปกติเกิดขึ้น
ประวัติโดยย่อ
ย้อนกลับไปในปี 2548 ทีมนักพัฒนาได้สร้างโปรเจ็กต์ที่เรียกว่า Linux ซึ่งเป็นระบบปฏิบัติการโอเพ่นซอร์สฟรี พวกเขาต้องการวิธีสื่อสารการเปลี่ยนแปลงระหว่างผู้มีส่วนร่วมหลายร้อยคนได้อย่างง่ายดาย ในขั้นต้น พวกเขาได้ส่งต่อแพทช์แต่ละส่วนที่มีโค้ดที่อัปเดตแล้ว แต่สิ่งนี้พิสูจน์ได้ว่ามีปัญหาในหลายด้าน โดยเฉพาะอย่างยิ่งเมื่อพิจารณาว่าชุดการเปลี่ยนแปลงใด "จริง" และเวอร์ชันล่าสุดของชุดการเปลี่ยนแปลงใดโดยเฉพาะ
ด้วยความผิดหวังจากปัญหาเหล่านี้ โปรเจ็กต์ Linux ทำให้ Linus Torvald ใช้แนวคิดที่ค่อนข้างแปลกใหม่สำหรับโปรเจ็กต์เพื่อแชร์ codebase ทั้งหมดระหว่างนักพัฒนา และรับ "snapshots" ของการเปลี่ยนแปลงที่เรียกว่า commits ซึ่งสามารถแชร์และรวมเข้ากับสำเนาอื่นๆ ของ รหัสได้ทุกที่ในโลก สิ่งนี้ช่วยในการสื่อสารในทันที เนื่องจากการเปลี่ยนแปลงโครงการทั้งหมดสามารถถูกมองว่าเป็นประวัติเดียว
วิธีการดังกล่าวในการจับภาพสแน็ปช็อตเหล่านี้คือ Git ซึ่งดำเนินไปอย่างรวดเร็วและได้รับการพัฒนาโดยอิสระจากโปรเจ็กต์ Linux นับตั้งแต่นั้นมา
กราฟของการเปลี่ยนแปลง
ตามแนวคิดแล้ว คุณสามารถคิดว่า Git เป็นกราฟของโหนด โดยที่แต่ละโหนดเป็นภาพรวมของโปรเจ็กต์ทั้งหมดในช่วงเวลาหนึ่ง หนังสือ Git มากกว่าบน git-scm.com สรุปโครงสร้างของสแนปชอต
กลุ่มสแนปชอตนี้สร้างกราฟเมื่อเวลาผ่านไป โดยจะมีเวอร์ชันล่าสุดอยู่ด้านหน้า หรือที่ด้านบนสุดของประวัติการเปลี่ยนแปลงของคุณ สแนปชอตแต่ละรายการจะเรียกว่า "คอมมิต" ใน Git
ต่อไปนี้คือภาพรวมคร่าวๆ ว่าโปรเจ็กต์ Git จะเป็นอย่างไรหากคุณใส่การเปลี่ยนแปลงล่าสุดไว้ที่ด้านบนสุดของกราฟ หมายเหตุ — ตัวอย่างนี้ใช้ GitKraken Git GUI เพื่อแสดงภาพกราฟ
การสร้างกราฟ Git
Git สร้างกราฟการเปลี่ยนแปลงนี้ หรือเรียกอีกอย่างว่าประวัติ Git ของคุณ ผ่านกระบวนการยืนยันการเปลี่ยนแปลง ก่อนที่คุณจะสามารถคอมมิตการเปลี่ยนแปลงได้ คุณจะต้องบอก Git โดยเฉพาะว่าคุณต้องการเพิ่มอะไรในสแนปชอตนั้น หรือคอมมิตตามที่อ้างถึงใน Git อย่างเหมาะสม
เมื่อทำงานในพื้นที่ การเปลี่ยนแปลงทั้งหมดที่คุณบันทึกในโครงการจะอยู่ใน "Working Directory" Git สามารถดูการเปลี่ยนแปลงเหล่านั้นได้ แต่ยังไม่ทราบว่าคุณต้องการส่งการเปลี่ยนแปลงใด คุณจะต้องบอก Git อย่างชัดเจนถึงการเปลี่ยนแปลงที่คุณต้องการคอมมิตโดยใช้คำสั่งที่เรียกว่า “git add” เพื่อเพิ่มไฟล์เฉพาะเหล่านั้นลงใน “staging area” ของ Git
เมื่อคุณมีการเปลี่ยนแปลงไฟล์ที่คุณต้องการคอมมิตกับกราฟของสแนปชอตของโปรเจ็กต์แล้ว คุณสามารถใช้คำสั่ง “Git commit” เพื่อสร้างสแนปชอตนั้นบนกราฟอย่างถาวร
ย้อนเวลากลับไป
ข้อดีอย่างหนึ่งของ Git และการมีประวัติโครงการทั้งหมดของคุณพร้อมใช้งานคือ คุณสามารถย้อนกลับและเลิกทำการเปลี่ยนแปลงใดๆ และทั้งหมดได้ตลอดเวลา
หากการคอมมิตล่าสุดที่คุณทำผิดพลาด หรือคุณเปลี่ยนใจเกี่ยวกับสิ่งที่คุณทำ คุณสามารถ “เปลี่ยน Git” เพื่อคืนค่าการคอมมิตของ Git สิ่งนี้จะสร้างคอมมิตใหม่บนกราฟที่เพียงแค่เลิกทำการเปลี่ยนแปลงที่คุณเพิ่งทำ
หากคุณต้องการย้อนเวลากลับไปและทำให้ดูเหมือนว่าคุณไม่เคยคอมมิต คุณสามารถใช้ "รีเซ็ต Git" เพื่อทำสิ่งนี้ได้
พลังของการแตกแขนงและการผสานใน Git
หนึ่งในคุณสมบัติที่ทรงพลังที่สุดที่ Git มอบให้คือความสามารถในการสร้างความเป็นจริงทางเลือกคู่ขนาน ไม่มีจริงๆ.
เนื่องจากคุณกำลังสร้างกราฟของการคอมมิตเมื่อเวลาผ่านไป คุณสามารถเลือกที่จะสร้างการคอมมิตแบบขนานที่เรียกว่า Branch จากจุดใดก็ได้ในประวัติของคุณ สาขา Git ที่สร้างขึ้นใหม่นั้นไม่ขึ้นกับประวัติหลัก หมายความว่าคุณมีอิสระที่จะทำการเปลี่ยนแปลงใดๆ ที่คุณต้องการ และจะไม่ส่งผลต่องานอื่นๆ ของคุณ ไทม์ไลน์หลักยังเป็นสาขาและมักเรียกว่าสาขา "หลัก" หรือ "หลัก" สาขาใหม่และสาขาอื่นที่ไม่ใช่สาขาหลักมักเรียกกันว่า "สาขาคุณลักษณะ"
เมื่อคุณได้ทำการเปลี่ยนแปลงในสาขาคุณลักษณะของคุณแล้ว คุณสามารถใช้การเปลี่ยนแปลงทั้งหมดกับสาขาหลักได้โดยดำเนินการรวม Git
มีข้อได้เปรียบอย่างมากในการทำงานในลักษณะนี้ สาขาคุณลักษณะแยกการเปลี่ยนแปลงโค้ด ดังนั้นหากคุณทำให้เกิดข้อผิดพลาด คุณสามารถมั่นใจได้ว่าสาขาหลักจะปลอดภัย การทำงานในสาขายังทำให้สาขาหลักมีเนื้อที่ว่างมากขึ้น ในกรณีที่คุณจำเป็นต้องปรับใช้การอัปเดตหรือการแก้ไขความปลอดภัยโดยไม่ขัดจังหวะการพัฒนาที่กำลังดำเนินการอยู่
การรวม Git ยังช่วยให้คุณสามารถดึงการเปลี่ยนแปลงจากสาขาหลักไปยังสาขาคุณลักษณะได้ สิ่งนี้ทำให้คุณสามารถตรวจสอบให้แน่ใจว่าการอัปเดตที่ทำกับสาขาหลักจะยังคงทำงานกับการเปลี่ยนแปลงที่คุณเสนอ ก่อนที่คุณจะพยายามรวมเข้ากับ “main”
หากคุณกำลังทำงานกับทีม กลยุทธ์การแยกสาขาของ Git สามารถมั่นใจได้ว่าทีมของคุณสามารถทดสอบการเปลี่ยนแปลงอย่างละเอียดก่อนที่จะดำเนินการผลิต และให้วิธีที่ตรงไปตรงมาในการจัดการกระบวนการ
การทำงานกับที่เก็บระยะไกลใน Git
เป้าหมายหลักประการหนึ่งของ Git คือการทำให้ง่ายต่อการแชร์โค้ดกับผู้คนทั่วโลก สร้างขึ้นใน Git เป็นแนวคิดของที่เก็บระยะไกล
ที่เก็บ Git คือโฟลเดอร์โปรเจ็กต์ทั้งหมดที่คุณจัดเก็บงานและเป็นสิ่งที่ Git ติดตามเมื่อเวลาผ่านไป แต่ละที่เก็บสามารถโคลนได้โดยใช้คำสั่ง Git clone และแชร์ได้ไม่จำกัดจำนวนครั้ง ทำให้ Git สามารถปรับขนาดได้มาก
อีกแง่มุมหนึ่งที่ทำให้ Git สามารถปรับขนาดได้มากคือ ถ้าคุณเปลี่ยนเอกสาร คุณไม่จำเป็นต้องเก็บสำเนาใหม่ของเอกสารนั้นทั้งหมด การเปลี่ยนแปลงจะถูกจัดเก็บเป็นแพ็กเก็ตข้อมูลเล็กๆ ที่เรียกว่า "เดลตา" และเฉพาะบรรทัดที่แก้ไขแต่ละรายการของไฟล์และข้อมูลเล็กน้อยเกี่ยวกับการเปลี่ยนแปลงเท่านั้นคือสิ่งที่ Git ต้องการในการจัดเก็บหรือแชร์ เดลต้ามีน้ำหนักเบามาก โดยมักมีขนาดเพียงไม่กี่ไบต์ ตัวอย่างเช่น ถ้าคุณเปลี่ยนบรรทัดเดียวในเอกสารขนาด 100KB เดลต้าจะมีขนาดเพียง 20 ไบต์หรือประมาณนั้น
เพื่อให้ทุกอย่างสอดคล้องและสอดคล้องกันในสำเนาทั้งหมดของที่เก็บ คุณเพียงแค่กำหนดว่าสำเนาใดที่อยู่ในคอมพิวเตอร์เครื่องใดเป็นสำเนา "จริง" ของโครงการ จากนั้นตรวจสอบให้แน่ใจว่าคอมมิตของคุณสร้างสำเนานั้น
วิธีนี้ใช้ได้ผลเช่นเดียวกัน เมื่อทำงานร่วมกับผู้อื่น คุณสามารถดึงการเปลี่ยนแปลงของพวกเขาลงในสำเนาในเครื่องของที่เก็บเพื่อให้แน่ใจว่าสำเนาของโครงการในเครื่องของคุณเป็นปัจจุบัน
มีบริษัทหลายแห่งที่ทำงานร่วมกันบนที่เก็บระยะไกลได้ง่ายและจัดการได้ง่ายมาก แพลตฟอร์มเช่น GitHub, GitLab และ BitBucket เสนอเครื่องมือโฮสต์ที่เก็บ Git ออนไลน์และการทำงานร่วมกัน มีที่เก็บ Git หลายล้านที่ออนไลน์ที่จัดการโดยนักพัฒนาหลายล้านคน และ Git ติดตามทุกแหล่งของความจริง ไม่ว่าผู้คนจะร่วมมือกันมากแค่ไหนก็ตาม
สิ่งที่ไม่ควรจัดเก็บใน Git
มาพูดถึงสิ่งที่คุณไม่ควรทำกับ Git กันดีกว่า ในขณะที่ Git นั้นยอดเยี่ยมในการแชร์โค้ดและติดตามการเปลี่ยนแปลงเมื่อเวลาผ่านไป มีงานบางอย่างที่ไม่เหมาะกับโมเดลนี้ โชคดีที่ Git มีวิธีที่สะดวกแก่เราในการบอกให้มันเพิกเฉยต่อสิ่งต่าง ๆ ที่เรียกว่าไฟล์ “.gitignore”
หากมีไฟล์ “.gitiginore” Git จะตรวจสอบกับไฟล์นั้นเพื่อดูว่าควรดูรายการเหล่านั้นหรือไม่ ภายใน ".gitiginore" คุณสามารถระบุชื่อไฟล์แต่ละชื่อ ไดเรกทอรีทั้งหมด หรือไฟล์ทั้งประเภทได้ ตัวอย่างเช่น หากคุณต้องการยกเว้นไฟล์ .png และ .jpg ทั้งหมด และโฟลเดอร์ "wp-content/uploads" ทั้งหมดของคุณ ในไฟล์ ".gitiginore" คุณเพียงแค่เขียนว่า:
*.png *.jpg wp-content/uploads
เหตุใดจึงยกเว้นไฟล์มีเดียจาก Git
Git เก็บสแน็ปช็อตของโปรเจ็กต์และส่งผ่าน "เดลต้า" ไปรอบๆ เท่านั้น แต่ถ้าไฟล์ที่เป็นปัญหาเป็น "หยด" ของข้อมูล เช่น รูปภาพ วิดีโอ หรือไฟล์ไบนารีอื่นๆ การเปลี่ยนแปลงไฟล์แต่ละครั้งจะสร้างหยดข้อมูลใหม่ทั้งหมด Git จำเป็นต้องจำสถานะของทั้ง Blob เก่าและ Blob ใหม่ เพิ่มขนาดที่ไม่จำเป็นจำนวนมากลงในที่เก็บ สิ่งนี้สร้างขึ้นเมื่อเวลาผ่านไป และในไม่ช้าที่เก็บจะกลายเป็นเทอะทะเมื่อคุณสูญเสียประโยชน์ของ Git ที่มีน้ำหนักเบา
เชื่อหรือไม่ คุณอาจไม่ต้องการติดตามการเปลี่ยนแปลงใน WordPress เอง มีเหตุผลสองสามประการสำหรับเรื่องนี้
อย่างแรก มีคำพูดเก่าๆ เกี่ยวกับ CMS ว่า "อย่าแฮ็คคอร์!" ไม่ควรมีอะไรที่คุณกำลังเปลี่ยนแปลงในแกนหลักของ WordPress ที่จะต้องถูกติดตาม การอัปเดตใดๆ จะต้องมาจาก WordPress เอง และหากคุณต้องการเวอร์ชันก่อนหน้า ก็สามารถระบุได้อย่างง่ายดายเมื่อคุณติดตั้ง คุณสามารถจัดเก็บการติดตั้ง WordPress ทั้งหมดใน Git ได้อย่างแน่นอน แต่ในบางสถานการณ์อาจมีประโยชน์ไม่มาก คุณเพียงต้องการติดตามการเปลี่ยนแปลงในโค้ดที่คุณกำลังจัดการ เช่น ปลั๊กอินที่กำหนดเองและธีมย่อย เป็นความคิดที่ดีที่จะตรวจสอบกับผู้ให้บริการโฮสติ้งของคุณเพื่อขอคำแนะนำในหัวข้อนี้
ประการที่สอง หากคุณวางแผนที่จะสนับสนุน WordPress คุณจะพบว่ามีการดูแลผ่านระบบควบคุมเวอร์ชันเก่าที่เรียกว่า SVN โมเดลนี้ต้องการโครงสร้างพื้นฐานของเซิร์ฟเวอร์ส่วนกลางและเป็นที่นิยมน้อยกว่ามากเมื่อเทียบกับ Git แต่ WordPress นั้นเก่ากว่า Git การทำงานกับระบบแพตช์ SVN นั้นแตกต่างกันเล็กน้อย และคุณควรอ่านเอกสารประกอบสำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้
บทสรุป
หวังว่าตอนนี้คุณคงเข้าใจมากขึ้นว่า Git คืออะไรและจะใช้ประโยชน์จากมันเพื่อทำงานกับโค้ดของเว็บไซต์ของคุณได้อย่างไร Git สามารถใช้ได้กับทุกไฟล์ที่คุณจะเปลี่ยนแปลงเมื่อเวลาผ่านไป แม้ว่าจะไม่ใช่รหัสคอมพิวเตอร์ก็ตาม
Git อ้างถึงผู้ใช้เป้าหมายว่าเป็น "ผู้มีความรู้" ซึ่งเป็นคำที่ยืมมาจาก IBM สำหรับทุกอย่างตั้งแต่บันทึกย่อบนเดสก์ท็อป สูตรอาหาร ไปจนถึงหนังสือทั้งเล่ม Git มีวิธีในการจัดระเบียบงานของคุณได้ดียิ่งขึ้น และทิ้งร่องรอยที่แน่ชัดว่าทำไมคุณถึงทำการเปลี่ยนแปลงแต่ละครั้งและเมื่อใดที่มันถูกสร้างขึ้น
พลังของความสามารถในการย้อนเวลากลับไปและดูการเปลี่ยนแปลงของคุณ ผสมผสานกับความสามารถในการทำงานในจักรวาลคู่ขนานแบบไม่จำกัดด้วยการแตกแขนงและการรวมเข้าด้วยกัน ทำให้ Git เป็นเครื่องมือที่ขาดไม่ได้สำหรับทุกคนที่ทำงานเกี่ยวกับโค้ด Git ยังเป็นวิธีหลักที่ทีมทำงานร่วมกันในโครงการโค้ด
Git ใช้งานได้ฟรี และ Git GUI ส่วนใหญ่ เช่น GitKraken มีเวอร์ชันฟรี ไม่มีเหตุผลใดที่คุณไม่ควรใช้ Git เพื่อติดตามงานของคุณ ดังนั้น "Git" ถึงมัน!
แหล่งข้อมูลที่เกี่ยวข้อง
- WordPress Local Development ด้วย XAMPP
- การใช้ Git และเวิร์กโฟลว์ขั้นสูง
- Git Hooks
- ไซต์ Dev คืออะไร?
- แคชสำหรับ WordPress