ช่วงนี้ห่างหายจากการเขียนบทความไปนาน (เนื่องจากงานรัดตัว) วันนี้เลยจะมาเขียนบทความเล็ก ๆ เพื่อไม่ให้ลืมกันสักหน่อย ส่วนเรื่องที่จะเขียนในวันนี้ก็เกี่ยวข้องกับเครื่องมือตัวนึงที่นักพัฒนาควรจะรู้จักและใช้งานให้เป็นเพื่อความสะดวกสบายของชีวิต
ปัญหาส่วนหนึ่งในการพัฒนาโปรแกรมก็คือการจัดการไฟล์ของโปรเจค ซึ่งสร้างความลำบากในการพัฒนาโปรแกรมไม่ว่าจะเป็น
- copy และเปลี่ยนชื่อไฟล์เพื่อ backup ไฟล์โค้ดเดิมก่อนจะทำการแก้ไข ทำให้พื้นที่ในคอมพิวเตอร์หดหายไปอย่างรวดเร็ว (ตามรูปข้างบน)
- เผลอลบไฟล์ทิ้ง
- ทำไฟล์หาย
- เซฟไฟล์ใส่ Flash Drive ส่งให้เพื่อนในทีม หรือใช้สำหรับย้ายไฟล์ไปยังคอมพิวเตอร์อีกเครื่อง
- เกิดปัญหาเวลาเพื่อน ๆ ในทีมแก้ไขไฟล์เดียวกัน ทำให้เสียเวลาในการรวมโค้ดในไฟล์
- แก้ไขโค้ดจนทำให้โปรแกรมทำงานผิดพลาดแล้วไม่สามารถ undo ในส่วนที่ผิดพลาดได้
เพื่อให้เห็นภาพ เราลองมาคิดถึงสถานะการณ์ในการพัฒนาโปรแกรมกันดู กรณีที่เราเขียนโค้ดเพียงคนเดียว ถ้าเป็นโปรเจคค่อนข้างใหญ่แน่นอนว่าจะต้องใช้เวลาในการพัฒนานานกว่าหนึ่งวันอยู่แล้ว ซึ่งวันรุ่งขึ้นเราก็ต้องเขียนโค้ดเพิ่มหรือไม่ก็แก้ไขโค้ดเก่าให้ดียิ่งขึ้น แต่การจะเขียนโค้ดลงไปเลยนั้นก็อาจส่งผลให้โค้ดส่วนที่ผ่าน ๆ มาเกิดข้อผิดพลาดจนไม่สามารถทำงานได้ เพื่อป้องกันกรณีแบบนี้เราก็ต้องทำการ backup โค้ดเก่าเก็บเอาไว้ก่อน ด้วยวิธีดั้งเดิมอย่างการ copy และเปลี่ยนชื่อไฟล์ (ตามรูปข้างบน) ข้อเสียนอกจากจะเปลืองพื้นที่แล้ว ยังก่อให้เกิดความสับสนเวลากลับมาหาไฟล์เก่า ๆ อีกด้วย
กรณีที่พัฒนาโปรแกรมเป็นทีม (สมมุติจำนวนคนเป็น 3 คนล่ะกัน) แล้วแต่ละคนต่างก็แก้ไขไฟล์เดียวกันเพิ่มฟีเจอร์ใหม่ ๆ ลงไปจนทำให้โค้ดในไฟล์ของแต่ละคนไม่เหมือนกัน (รูปข้างบน) แบบนี้ก็งานเข้าแล้วสิ คนที่มีหน้าที่รวมไฟล์ของแต่ละคนเข้าด้วยกันก็ต้องมานั่งไล่อ่านโค้ดทุกไฟล์ทีละบรรทัดเพื่อหาดูว่าจะรวมโค้ดเข้ากันยังไง
สิ่งเหล่านี้เป็นปัญหาที่เหล่านักพัฒนาโปรแกรมน่าจะเคยเจอมาก่อน ยิ่งทำงานเป็นทีม ปัญหาที่ตามมาก็จะมากขึ้น แต่ไม่ต้องกลัว เพราะปัจจุบันนี้มีเครื่องมือที่จะช่วยให้นักพัฒนาไม่ต้องเจอกับปัญหาเหล่านี้ วีรบุรุษขี่ม้าขาวที่มาช่วยเหลือเหล่านักพัฒนานั้นก็คือ Git นั่นเอง
สิ่งเหล่านี้เป็นปัญหาที่เหล่านักพัฒนาโปรแกรมน่าจะเคยเจอมาก่อน ยิ่งทำงานเป็นทีม ปัญหาที่ตามมาก็จะมากขึ้น แต่ไม่ต้องกลัว เพราะปัจจุบันนี้มีเครื่องมือที่จะช่วยให้นักพัฒนาไม่ต้องเจอกับปัญหาเหล่านี้ วีรบุรุษขี่ม้าขาวที่มาช่วยเหลือเหล่านักพัฒนานั้นก็คือ Git นั่นเอง
Git คืออะไร
Git คือ Version Control หรือระบบที่บันทึกการเปลี่ยนแปลงของไฟล์ ซึ่งเราสามารถเรียกไฟล์ที่แก้ไขไปแล้วย้อนกลับมาได้ ทำให้เราไม่ต้องกลัวว่าจะเผลอลบไฟล์ทิ้ง หรือแก้ไขโค้ดจนทำให้โปรแกรมเกิดข้อผิดพลาดแล้วไม่สามารถเรียกคืนโค้ดเก่าได้ นอกจากนี้เรายังสามารถเช็คประวัติของไฟล์ได้ ไม่ว่าจะเป็นไฟล์นั้นถูกสร้างโดยใคร ถูกแก้ไขโดยใคร และยังสามารถช่วยในการ merge โค้ดที่ถูกแก้ไขในไฟล์เดียวกันได้ซึ่งจะช่วยลดเวลาในการรวมโค้ดด้วยตัวเองเป็นอย่างมาก ดังนั้น Git จึงเป็นเครื่องมือที่เหมาะกับนักพัฒนา โดยเฉพาะโปรเจคที่ต้องพัฒนากันเป็นทีม
ในการทำงาน..... Git จะมองข้อมูลเป็นเสมือนภาพถ่าย (Snapshot) เมื่อมีการบันทึกสถานะของโปรเจค เจ้า Git ก็จะทำการถ่ายภาพของไฟล์ทั้งหมดในตอนนั้นและบันทึกการอ้างอิงไปยัง Snapshot นั้น ถ้าไฟล์ใดไม่ได้มีการแก้ไขเปลี่ยนแปลง Git ก็จะไม่บันทึกไฟล์นั้น แต่จะทำการเชื่อมโยงไปยังไฟล์เดิมที่เคยถูกบันทึกเอาไว้อยู่แล้ว โดยสถานะของไฟล์ในโฟลเดอร์ Git จะแบ่งออกเป็น 4 สถานะ ได้แก่ Untracked, Unmodified, Modified และ Staged โดย
ในการทำงาน..... Git จะมองข้อมูลเป็นเสมือนภาพถ่าย (Snapshot) เมื่อมีการบันทึกสถานะของโปรเจค เจ้า Git ก็จะทำการถ่ายภาพของไฟล์ทั้งหมดในตอนนั้นและบันทึกการอ้างอิงไปยัง Snapshot นั้น ถ้าไฟล์ใดไม่ได้มีการแก้ไขเปลี่ยนแปลง Git ก็จะไม่บันทึกไฟล์นั้น แต่จะทำการเชื่อมโยงไปยังไฟล์เดิมที่เคยถูกบันทึกเอาไว้อยู่แล้ว โดยสถานะของไฟล์ในโฟลเดอร์ Git จะแบ่งออกเป็น 4 สถานะ ได้แก่ Untracked, Unmodified, Modified และ Staged โดย
- Untracked หมายถึง ไฟล์ยังไม่ได้ถูก Git ติดตาม
- Unmodified หมายถึง ไฟล์ที่ถูก Git ติดตามอยู่ และไม่มีแก้ไขอะไร
- Modified หมายถึง ไฟล์ที่ถูก Git ติดตามอยู่ และมีการแก้ไขแล้ว
- Staged หมายถึง ไฟล์ที่ถูก Git ติดตามอยู่ และพร้อมที่จะ commit บันทึกลงฐานข้อมูล
เมื่อทำการบันทึกไฟล์ลงในฐานข้อมูล แล้วเราเผลอลบไฟล์นั้นทิ้งไปหรือแก้ไขโค้ดผิดพลาดทำให้เกิด error จนโปรแกรมพัง เราก็ยังสามารถกู้คืนโดยเรียกข้อมูลจากที่เราบันทึกไว้ก่อนหน้านั้นได้ ดังนั้นการทำงานของ Git ก็เสมือนเป็นการทำ backup ไฟล์เอาไว้นั่นเอง
นอกจากจะใช้เพื่อการ backup ไฟล์แล้ว Git ยังถูกใช้บน Server เพื่อสนับสนุนการทำงานแบบทีมหรือมีการแก้ไขไฟล์จากหลาย ๆ แหล่ง โดยเว็ปไซต์ยอดนิยมที่ให้บริการ Git ได้แก่ Github , Bitbucket , Gitlab เป็นต้น
นอกจากจะใช้เพื่อการ backup ไฟล์แล้ว Git ยังถูกใช้บน Server เพื่อสนับสนุนการทำงานแบบทีมหรือมีการแก้ไขไฟล์จากหลาย ๆ แหล่ง โดยเว็ปไซต์ยอดนิยมที่ให้บริการ Git ได้แก่ Github , Bitbucket , Gitlab เป็นต้น
บทความนี้แสดงให้เห็นถึงข้อดีและการทำงานคร่าว ๆ ของ Git ซึ่งจะช่วยให้เราเข้าใจถึงความจำเป็นในการใช้งาน Git ในการพัฒนาแอปพลิเคชัน ส่วนบทความถัดไปเราจะมาติดตั้ง Git เพื่อเริ่มใช้งานกัน แล้วพบกันใหม่ในบทความหน้าจ้าาาาา
0 comments:
แสดงความคิดเห็น