Git: เริ่มต้นเรียนรู้ Git ตอนที่ 1 ทำความรู้จักกับ Git และประโยชน์ของ Git

หลายคนอาจจะเคยได้ยินเรื่องราวของ Git มาบ้างแล้ว แต่อาจจะยังไม่รู้ว่า Git คืออะไร?  Git มีประโยชน์อะไรบ้าง? เรามาหาคำตอบพร้อมกัน กับบทความนี้ค่ะ

 

Git คืออะไร?

Git คือ Version Control System ที่นิยมใช้กันทั่วโลก

แล้ว Version Control System มันคืออะไรละ?

งั้นเรามาดูกันดีกว่าค่ะว่า เราจะได้รับประโยชน์อะไร จากการใช้ Git บ้าง

 

Git ช่วยเราในเรื่องของการจัดการไฟล์ต่าง ๆ ในโปรเจ็กต์ของเรา สมมติว่าเรากำลังสร้างเว็บไซต์ ในโปรเจ็กต์ของเราก็อาจจะประกอบไปด้วยโฟล์เดอร์ และไฟล์ต่าง ๆ มากมาย ดังภาพด้านล่าง

 

git-intro-1-1

ภาพที่ 1 ตัวอย่างโปรเจ็กต์

 

เหตุผลที่ทำให้ Git เป็นที่รักของนักพัฒนาซอฟต์แวร์ทั่วโลกคือ 3 เรื่องหลัก ๆ ดังนี้

 

 

1 การเก็บประวัติ (History)

Git จะเก็บประวัติทุก ๆ การเปลี่ยนแปลงที่เกิดขึ้น ลองจินตนาการว่า เรามีไฟล์ styles.css อยู่ และอาจจะทำการลบ เพิ่มเติม หรือแก้ไข style บางส่วน เมื่อเราคิดว่าทุกอย่างเรียบร้อยแล้ว ก็นำโค้ดไปใช้งานจริง

 

แต่ผ่านไป 1 เดือน เราก็พบว่า โค้ดนั้นไม่สามารถทำงานได้ในบ้างหน้าเว็บเพจ แล้วเราจะแก้ปัญหานี้อย่างไร? และเราจะจำได้หรือไม่ว่า 1 เดือนที่ผ่านมา เราแก้ไขอะไรไปบ้าง?

 

Git จะช่วยบอกเราว่า บรรทัดไหนที่เราลบโค้ด เพิ่มโค้ด หรือแก้ไขโค้ดทั้งหมด นั่นหมายความว่า ทุก ๆ การเปลี่ยนแปลงที่เกิดขึ้น จะถูกบันทึกเอาไว้

 

และเราจะใช้เวลาเพียงเล็กน้อยเท่านั้น เพื่อแก้ไขปัญหาที่เกิดขึ้นในครั้งนี้ 🙂

 

git-intro-1-2

ภาพที่ 2

 

2 การทำงานร่วมกัน (Collaboration)

ในการทำงานจริง เราจะต้องทำงานเป็นทีม ไม่ได้ทำเพียงคนเดียว ลองนึกถึงไฟล์ Word 1 ไฟล์ ที่ต้องทำร่วมกันกับเพื่อนอีก 2 คน เมื่อเราทำไปได้บางส่วน จากนั้นส่งให้เพื่อนไปทำเพิ่ม และช่วยแก้ไขงานให้เรา

 

หลังจากส่งไฟล์ไปแล้ว เราก็ยังคงทำงานกับไฟล์นั้นต่อ และเราจะรู้ได้อย่างไรว่า เพื่อนของเรา ทำการแก้ไขจุดไหนของเอกสารบ้าง?

 

เราอาจจะขอให้เพื่อน จดรายการที่ทำการแก้ไขเปลี่ยนแปลงกลับมาให้ แต่ถ้าเพื่อนตอบกลับมาว่า “จำไม่ได้” เราจะทำอย่างไร? จะต้องไล่เช็คไฟล์ทั้งหมดเพื่อ update ข้อมูลรวมกันเลยหรือไม่?

 

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

 

git-intro-1-3

ภาพที่ 3

 

 

3 การแยกการทำงานออกจากโปรเจ็กต์หลัก (Feature branches)

การทำความเข้าใจในเรื่องนี้ สมมติว่าเราทำการสร้างโปรเจ็กต์หลักที่นำไปใช้งานจริง และมีการ update พัฒนาต่อยอดให้ดีขึ้นเรื่อย ๆ 

 

ซึ่งงานที่แก้ไข ก็อาจจะมีหลายส่วน เช่น งานแรก เราอาขจะแก้ไขส่วนหัวของเว็บไซต์ (header) อาจจะ เปลี่ยนโลโก เปลี่ยนสีพื้นหลัง ฯลฯ

 

git-intro-1-4

ภาพที่ 4 ส่วนของ header

 

งานที่ 2 อาจจะเป็นการ แก้ไขส่วนล่างสุดของเว็บ (footer) เช่นแก้ไข Link หรือข้อความบางส่วน

 

git-intro-1-5

ภาพที่ 5 ส่วนของ footer

 

ถ้าเราทำงานโดยที่ไม่ได้ใช้ Git วันแรก เราอาจจะทำการแก้ไขทั้ง 2 ส่วน ไปพร้อมกัน วันต่อมา ก็แก้ไขทั้ง 2 ส่วนต่อ และส่วนของ footer ก็ถูกแก้ไขจนเสร็จ แต่ส่วนของ Header ยังไม่มีท่าทีว่าจะเสร็จเลย

 

เรารู้ว่า footer พร้อมสำหรับการนำขึ้นไปใช้งานจริงแล้ว แต่เราก็ไม่สามารถนำโค้ดขึ้นใช้งานจริงได้ เพราะส่วนของ Header ยังไม่เสร็จ

 

ถ้าเกิดเหตุการณ์แบบนี้ เราจะต้องรอจนกว่า Header เสร็จ ถึงจะสามารถนำโค้ดทั้งหมดไปใช้งานจริงได้ ใช่หรือไม่?

 

Git จะทำให้เราสามารถจัดการกับงานหลาย ๆ งาน หรือหลาย ๆ features ได้ เพียงแค่ทำการสร้าง branches ขึ้นมา เพื่อแยกงานส่วนของ Header และ Footer ออกจากกัน

 

ลองจิตนาการว่า เว็บหลักก็คือส่วนของต้นไม้ ส่วน branches ก็คือกิ่งก้านสาขาที่แยกออกมา หรือคือ features ที่เราจะ update หรือ แก้ไขเพิ่มเข้าไป

 

git-intro-1-6

ภาพที่ 6

 

เราอาจจะสร้าง branches เป็นกิ่งที่ 1 และตั้งชื่อว่า header-changes

และสร้างกิ่งที่ 2 ชื่อว่า footer-changes

 

การทำงานทั้ง 2 ส่วนจะแยกกันต่างหาก จะทำงานพร้อมกัน หรือสลับ branches  ไปมาก็ได้ เมื่อทำงานส่วนใดเสร็จก่อน เราก็แค่ทำการรวม (merge) กิ่งเข้าไปเป็นต้นไม้เพียงเท่านั้น โค้ดส่วนที่เสร็จก่อน ก็สามารถนำออกไปใช้งานจริงได้ทันที

 

git-intro-1-7

ภาพที่ 7

 

หลายอาทิตย์ต่อมาเมื่อทำ header เสร็จ เราก็แค่ merge ส่วนของ header เข้าสู่โปรเจ็กต์หลัก และสามารถใช้งานจริงได้ทันทีเช่นกัน

 

อ่านมาถึงตรงนี้ คุณเริ่มจะลงรัก Git แล้วหรือยังคะ? ในเมื่อ Git มีประโยชน์มากมายขนาดนี้ เรามาเรียนรู้ Git กันเถอะค่ะ 🙂

 

 

Comments

comments

ธมนวรรณ มณีจันทร์

เป้าหมาย : "พัฒนาคุณภาพชีวิตผู้คน ผ่านการส่งมอบความรู้ ด้วยเทคโนโลยีที่ดีที่สุด" ... ประวัติ