Git-คืออะไร

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

ระบบการทำงานของ Git ไม่ได้อยู่แค่การตรวจสอบการแก้ไขเท่านั้น ยังสามารถรวมการแก้ไขทั้งหมดเข้าด้วยกันได้อย่างชาญฉลาด เราเรียกขั้นตอนนี้ว่า CI ( Continuous Integration ) และในปัจจุบัน Git VCS ( Version Control System ) มีการควบรวมฟีเจอร์ที่ทำให้นักพัฒนาทำงานได้สะดวกมากขึ้น สามารถทำงานได้ตั้งแต่ขั้นตอนการพัฒนา ไปจนถึงการ Deploy งานขึ้นใช้งานบน Server เราเรียกขั้นตอนนี้ว่า CD ( Continuous Deployment )

การใช้งาน Git มีให้เลือกใช้งาน 2 แบบ คือ

  • ใช้งานผ่าน Git Command Line ( ใช้งานผ่านการพิมพ์คำสั่งด้วยตัวหนังสือ )
  • ใช้งานผ่านโปรแกรม Git GUI ( ใช้งานผ่านโปรแกรมสำเร็จรูป )

คำถามคือ แล้วเราจะเลือกใช้แบบไหนดี ?

อันนี้ก็แล้วแต่ความถนัด นักพัฒนาบางคนอาจจะชอบใช้ผ่านคำสั่ง command line แต่โดยส่วนตัวแนะนำให้ใช้ Git GUI มากกว่า เหตุผลก็เพราะว่า ทำงานได้เร็วกว่า ลดโอกาสเกิดข้อผิดพลาดน้อยลง เพราะไม่ต้องพิมพ์คำสั่งให้วุ่นวาย เหมือนกับที่ผู้พัฒนา Git GUI เจ้าหนึ่งเขาบอกว่า

Say goodbye to the command line – simplify distributed version control with a Git client and quickly bring everyone up to speed.

เลือกโปรแกรม Git GUI ที่ใช่สำหรับคุณ

ปัจจุบันโปรแกรม Git GUI มีให้เลือกใช้งานหลากหลายครับ ลักษณะการทำงานโดยรวมไม่ได้แตกต่างกันมาก อาจจะต้องทดลองใช้งานเอง และดูว่าเราชอบ หรือเวลาใช้งานจริง ๆ เราเข้ากันได้กับ UI ของโปรแกรมไหน ตัวอย่างรายชื่อโปรแกรมตามด้านล่างครับ

เข้าใจวงจรการใช้งาน Git ( Git Life Cycle )

การเริ่มต้นใช้งาน Git จะไม่ใช่เรื่องยากและวุ่นวายเลย ถ้าเราเข้าใจ วงจรการใช้งานของมัน เพราะท้ายที่สุดแล้ว พื้นฐานการใช้งานจริง ๆ ก็จะวนอยู่ประมาณนั้น ตามภาพด้านล่างคือรูปแบบวงจรการใช้งาน Git และอธิบายการทำงานโดยอ้างอิงจากการใช้งาน Git GUI นะครับ

  • Working Directory Untracked By Git คือ เราสร้างโฟลเด้อสำหรับเก็บไฟล์งานของโปรเจคต่าง ๆ ไว้ในเครื่องของเรา โดยที่ Git ยังไม่ได้มีการทำงานใด ๆ
  • Working Directory Tracked By Git คือ การที่เราเริ่มให้ Git นั้นเข้ามาทำงาน และเริ่มขบวนการตรวจสอบไฟล์ต่าง ๆ ที่ถูกเพิ่มเข้ามา หรือแก้ไข ภายในโฟลเด้อนี้แล้ว สำหรับ Git GUI ก็คือการ Add, New หรือ Clone Repository นั่นเอง ถือว่าเป็นการ Init Working Directory
  • Staging Area คือ เมื่อเราอนุญาติให้ Git ทำงาน หรือ Track ไฟล์ใน Working Directory เรียบร้อยแล้ว การที่เราแก้ไข หรือเพิ่มไฟล์เข้าไปใน Working Directory สถานะของไฟล์นั้น ๆ เปลี่ยนเป็น Staging Area ไฟล์ที่อยู่ในสถานะ Staging Area คือไฟล์ที่เราสามารถ Commit เพื่อเก็บเป็นเวอร์ชั่น หรือเก็บประวัติการแก้ไขแต่ละครั้งได้
  • Local Repository คือ ทุกครั้งที่เรา เพิ่ม หรือ แก้ไขไฟล์ และ Commit ข้อมูลการแก้ไขนั้น ๆ จะถูกเก็บไว้ใน Local Repository ก็คือภายในเครื่องของเราเองนี่แหล่ะ และพร้อมสำหรับการ Push หรือ การส่งขึ้นไปเก็บไว้บน Server ( ตั้งแต่ขั้นตอนแรก จนถึงขั้นตอนนี้ คือการเก็บข้อมูลในโฟลเด้อเดียวกัน ในเครื่องของเราเองทั้งหมด )
  • Remote Repository คือ หลังจากที่เราทำงานไปได้ซักพัก เราอาจจะมีการแก้ไข เพิ่มไฟล์ นู่นนี่นั้น และ Commit ไป 10 กว่าครั้งแล้ว และอยากจะพัก 10 นาที เราก็จัดการใช้คำสั่ง Push เพื่อนำการแก้ไขแต่ละเวอร์ชั่นทั้งหมด ขึ้นไปเก็บไฟล์บน Remote Server ในขั้นตอนของการ Push เราสามารถ Push ทุกครั้งที่ Commit ก็ได้เช่นกันนะครับ ไม่จำเป็นต้อง Commit ไว้หลายเวอร์ชั่น แล้วค่อย Push ก็ได้

เริ่มใช้งาน Git ปฏิบัติจริง ( Github Dekstop GUI & Gitlab Repository )

ในตัวอย่างการใช้งานจริงนี้ จะยกตัวอย่างการใช้งาน โดยใช้โปรแกรม Github Desktop GUI ร่วมกับ Github Repository สำหรับท่านที่ต้องการใช้ Gitlab สามารถอ่านวิธีการใช้ Github Desktop ร่วมกับ Gitlab ที่กระทู้นี้ครับ วิธีใช้งาน Github Desktop ร่วมกับ Gitlab Reposity

  • หลังจากติดตั้ง Github Desktop และสมัครสมาชิก Github เรียบร้อยแล้ว ให้เปิดโปรแกรม Github Dekstop ขึ้นมาครับ เข้าสู่ระบบให้เรียบร้อย จากนั้นเลือก File -> New Repository ตั้งชื่อ Repository ในที่นี่ผมจะตั้งชื่อว่า hello-git-2020 และกำหนด Local Path ไปยังที่เก็บไฟล์โปรเจคของเรา หรือจะเป็นโฟลเด้อเปล่า ๆ ก่อนก็ได้ จากนั้นกดปุ่ม ‘Create Repository’
  • หลังจากที่เราสร้าง Github Repository เรียบร้อยแล้ว โฟลเด้อที่เราชี้ Local Path ไป จะอยู่ใน Working Directory Tracked By Git เรียบร้อยแล้ว และจะเจอหน้าตาของโปรแกรมตามรูปด้านล่าง ให้สังเกตุว่าจะแบ่ง 3 ส่วน หลัก ๆ คือ
  1. Current Repository คือ โปรเจคที่เรากำลังทำงานอยู่ ถ้าเราทำงานหลายโปรเจค เราสามารถเปลี่ยนการทำงานไปยังโปรเจคอื่น ๆ ได้จากเมนูนี้
  2. Current Branch คือ สาขาหรือเวอร์ชั่นที่เรากำลังทำงานอยู่ สำหรับ Github จะมีสาขาเริ่มต้นให้คือ main ( ก่อนหน้านี้ใช้คำว่า master ) เราสามารถแบ่งการทำงานให้กับโปรแกรมเมอร์แต่ละคนด้วยการแยกเป็นแต่ละสาขาออกไปได้
  3. และ ส่วนสุดท้ายจะเป็นการแสดงคำสั่งการทำงานในส่วนนั้น อาจจะเป็น Fetch Origin, Publish Repository, Publish Branch, Push, Pull เป็นต้น
  • ต่อไปเราจะเริ่มด้วยการสร้างไฟล์เข้าไปในโปรเจค ให้สังเกตุปุ่มซ้ายมือ ‘Open in Visual Studio Code’ หมายถึงเราจะเปิดโปรแกรม VS Code เพื่อแก้ไข หรือ เพิ่มไฟล์ต่าง ๆ ผ่านโปรแกรมนี้ กรณีที่ท่านลงโปรแกรมอื่น ก็อาจจะแสดงเป็นชื่อของโปรแกรมอื่น ส่วนนี้เราสามารถตั้งค่าได้ว่าจะใช้ Git ร่วมกับโปรแกรมไหน ให้คลิกที่ปุ่มนี้เลยครับ
  • ให้เราทดสอบโดยการเพิ่มไฟล์เข้าไปในโปรเจค โดยในตัวอย่าง จะทดสอบสร้างไฟล์ index.html ตามภาพด้านล่างครับ
  • หลังจากที่เราแก้ไขและกดบันทึกไฟล์เรียบร้อยแล้ว ให้กลับมาที่โปรแกรม Github Desktop จะสังเกตุว่า มีปุ่ม ‘commit to main’ โผล่มาแล้ว ให้เราพิมพ์ comment เข้าไปว่าเราแก้ไขอะไรบ้าง จากนั้นกดปุ่ม commit to main เพื่อบันทึกการแก้ไขไว้ในเครื่อง และกดปุ่ม ‘Publish Repository’ เพื่ออัพโหลดโปรเจคของเราขึ้นไปบน Github Server หลังจากที่เรา Publish เรียบร้อยแล้ว จะสังเกตุว่า มีปุ่ม ‘View on Github’ โผล่มา ถ้าลองกดปุ่มนี้ดู ก็จะเห็นว่าโปรเจคของเราขึ้นไปอยู่บน Github Server เรียบร้อยแล้ว ตามภาพด้านล่าง

ขั้นตอนการทำงานโดยรวม เมื่อให้ Git เข้ามาจัดการโปรเจค การทำงานก็จะวนอยู่ประมาณนี้ครับ คือ สร้าง Repository -> แยก Branch ให้แต่ละคนในทีม -> เพิ่ม แก้ไข ไฟล์งาน -> commit เป็นแต่ละเวอร์ชั่น -> จากนั้นก็ Push ขึ้นไป Remote Repository

ในกระทู้ต่อไป สำหรับการใช้งาน Git จะพูดถึงการแยก Branch, Merge และแก้ไข Conflict ครับ วันนี้เมื่อยแล้ว

วิธีแก้ Merge Conflict ใน Git ในขั้นตอนของการพัฒนา โปรแกรมเมอร์แต่ละคนอาจจะแยก Branch ออกไปพัฒนาแต่ละฟีเจอร์ของโปรเจค แต่อาจจะมีบ้างที่มีการแก้ไขในส่วนของไฟล์ที่ใช้ร่วมกัน เช่...
วิธีใช้งาน Github Desktop ร่วมกับ Gitlab Repositor... หลังจากที่ไมโครซอฟต์ซื้อกิจการ github ในปี 2018 นักพัฒนาหลาย ๆ ท่านก็หันไปใช้งาน gitlab แทน สำหรับนักพัฒนาที่คุ้นเคยกับการใช้ git command line ก็...
เว็บไซต์ทำ QR Code ชำระเงิน บัญชีพร้อมเพย์... Prompt Pay (พร้อมต์เพย์) คือ รูปแบบการชำระเงินแบบใหม่ ที่ทำให้เราสามารถชำระเงิน หรือ รับโอนเงิน ผ่านหมายเลขโทรศัพท์ หรือ เลขบัตรประชาชน ที่ลงทะเบ...
6 สุดยอด WordPress Plugins สำหรับ SEO... เวิร์ดเพรส คือ เครื่องมือสำหรับทำเว็บไซต์สำเร็จรูปที่ได้รับความนิยม และทรงประสิทธิภาพมาก ๆ ทุกคนสามารถดาวน์โหลดและติดตั้ง จัดการเนื้อหาบนเว็บไซต์...

By codebee

- Programmer & Writer