SiamHTML
Published in

SiamHTML

Git คืออะไร

git

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

ความเป็นมาของ Git

Git ถูกสร้างขึ้นมาโดย Linus Torvalds ซึ่งเป็นคนสร้างระบบปฏิบัติการ Linux โดยคุณพี่แกใช้เวลาเขียนโค้ดเพียงแค่ 2 สัปดาห์เท่านั้นเอง ส่วนสาเหตุที่ต้องสร้าง Git ขึ้นมาก็เพื่อจะนำมาใช้ในการพัฒนา Linux นั่นเอง เพราะ Linux ถือเป็นโปรเจคขนาดใหญ่ที่มีโปรแกรมเเมอร์ทั่วโลกร่วมกันเขียนโค้ด ใครอยากจะเขียนส่วนใหน ก็เขียนไป แล้วก็ commit ส่งโค้ดเข้าไปรวมกับโค้ดของคนอื่นๆ ลองนึกภาพดูว่าโปรเจคที่มีคนทั่วโลกรุมเขียนโค้ด ไอ้ตัวที่คอยดูแลโปรเจค ซึ่งก็คือ Git มันจะต้องเจ๋งขนาดไหน โปรเจคใหญ่ขนาดนี้มันยังเอาอยู่ โปรเจคเล็กๆ นี่เรื่องหมูๆ

ลักษณะเด่นของ Git

ทีนี้เรามาดูลักษณะเด่นของ Git ซึ่งจะทำให้เราเข้าใจตัวตนที่แท้จริงของมันได้ดียิ่งขึ้นกันครับ

Save point Tool

หลายๆ คนอาจบอกว่ามันเป็น backup tool แต่ผมขอเรียกมันว่าเป็น save point tool ดีกว่า เนื่องจากว่าตอนที่เราเขียนโค้ด และทดสอบโค้ดจนพบว่าโค้ดที่เราเขียนนั้นมันทำงานได้ถูกต้องอย่างที่เราต้องการแล้ว เราก็จะ save point มันไว้ (ตามภาษาทางด้านเทคนิคเขาเรียกว่า commit) ซึ่ง save point เหล่านี้ เราจะสามารถย้อนกลับมาหามันเมื่อไรก็ได้ ไม่ว่าจะเป็นการย้อนเวลาไปตอนที่ไฟล์นั้นๆ ยังไม่ถูกลบ ไปตอนที่ไฟล์นั้นๆ ยังไม่ถูกแก้ไข ไปตอนที่ bug มันยังไม่เกิด พอเราเลือก save point ที่ต้องการจะไปได้แล้ว พวกโค้ดต่างๆ ในโฟลเดอร์ที่เราพัฒนาอยู่ก็จะกลับไปเหมือนตอนที่เราทำการ save point ไว้นั่นเอง

History Tool

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

โค้ดสกรัม

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

Personal Performance

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

Save money Tool

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

บทสรุป

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

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

--

--

--

The collection of articles for front-end developers

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Suranart Niamcome

Suranart Niamcome

Lead Engineer @Tencent (Thailand)

More from Medium

Way to CogniGuide

Singleton design pattern — StudySection Blog

Singleton design pattern — StudySection Blog

My Journey into the GAMING Industry… Learning!! Day 23

DevDum! Code Smarter. Not Harder.