Version Control System คือระบบสำหรับการจัดการ version ของการพัฒนาโปรแกรม ช่วยให้จัดการโปรแกรมที่มีการพัฒนาอย่างต่อเนื่อง และส่งเสริมการทำงานร่วมกันหลายคนได้อย่างมีประสิทธิภาพ ทั้งนี้เรายังสามารถใช้เวปอย่าง Github ซึ่งเป็น VCS ที่ใช้โชว์ผลงานที่เราสร้างขึ้นมาได้อีกด้วย
หัวข้อในบทความนี้
Version Control System คืออะไร? ทำไมต้องใช้
เพราะการพัฒนาต่อเนื่องเป็นเรื่องปกติของการเขียนโปรแกรม
เส้นทางสำคัญกว่าจุดมุ่งหมายโดยเฉพาะในเรื่องการเขียนโปรแกรม เพราะโดยธรรมชาติการเขียนโปรแกรมพูดถึง "การสร้าง" สิ่งต่างๆ ให้เกิดขึ้น ดังนั้นวิธีการสร้าง เส้นทางการพัฒนานี่แหละ ที่เป็นเนื้อหากลักของการเขียนโปรแกรม
ซึ่งการพัฒนาโปรแกรมใดๆ เราจะมีการพัฒนาเป็นส่วนๆ ค่อยๆ ประกอบส่วนต่างๆ เหล่านี้เข้าด้วยกันรวมกันเป็นระบบที่เราสนใจ ซึ่งกว่าจะสำเร็จเป็นระบบนึง อาจมีลำดับขั้นในการพัฒนาจำนวนมาก เช่น การสร้างฟังก์ชันที่ต้องใช้ หรือแม้แต่การสร้างส่วนการทำงานย่อยๆ ใดๆ เสร็จก่อนส่วนอื่นๆ
ทำให้การจัดการกับขั้นตอนการพัฒนา การติดตามได้ว่าตอนนี้โค้ด version ล่าสุดของเราหน้าตาเป็นอย่างไร อยู่ที่ไหน และทำอะไรได้แล้วบ้างเป็นหนึ่งในสิ่งสำคัญที่ช่วยให้เราสามารถ กลับไปทำงานต่อที่ version เก่ากว่า แยกการพัฒนาของโปรแกรมออกเป็น 2 โปรแกรมย่อย หรือแม้แต่แค่ติดตามการพัฒนาตามขั้นตอนปกติ
ซึ่งเราจะใช้โปรแกรมที่เรียกว่า Version Control System เข้ามาติดตามการพัฒนาอย่างมีประสิทธิภาพ
ประโยชน์ และการทำงานของ VCS (Version Control System)
การบันทึกติดตาม version ของการพัฒนา ช่วยให้เราสามารถแก้ไขปัญหา ทำงานร่วมกันบนโปรเจคเดียวกันได้อย่างมีประสิทธิภาพ
โดย VCS จะเก็บตัวโปรแกรมเอาไว้ที่ repository หรือสถานที่เก็บโปรแกรม ที่จะมีการกำกับ version เอาไว้เพื่อใช้เป็นแหล่งข้อมูลหนึ่งเดียวสำหรับการเรียกใช้งานตัวโปรแกรมในอนาคต
เมื่อมีการเรียกใช้งานหรือ มีความต้องการนำโปรแกรมมาจัดการ ใช้งาน อัพเดท แก้ไขต่างๆ VCS จะทำการดึงข้อมูลจาก repository และนำมาคัดลอกไว้บนคอมพิวเตอร์เพื่อใช้งาน
เมื่อทำงานเรียบร้อย จะมีขั้นตอนการส่งข้อมูลกลับไปยัง VCS ซึ่ง VCS จะทำการรวมการเปลี่ยนแปลง และอัพเดทก่อนส่งกลับไปเก็บเป็นโปรแกรมในไฟล์เดียวเพื่อป้องกันการซ้ำซ้อน
เมื่อ VCS จัดกาความแตกต่างเรียบร้อย VCS จะทำการบันทึกไฟล์เอาไว้
Git: Version Control System สำหรับคอมพิวเตอร์ของเรา
Git เป็นโปรแกรมที่เราใช้ทำ Version Control ที่เราติดตั้งลงบนคอมพิวเตอร์ของเราเพื่อติดตามการพัฒนาโปรแกรมที่เกิดขึ้นบนเครื่องของเรา
ติดตั้ง git
โปรแกรม git เป็นโปรแกรมพื้นฐานสำหรับการใช้จัดการ version control โดยเราจะติดตั้งไว้บนคอมพิวเตอร์ของเรา และในบทความนี้จะได้เรียกใช้สำหรับการทำงานกับ GitHub ในหัวข้อถัดไป
ดาวโหลด Git ได้ที่นี่ https://git-scm.com/
GitHub: Remote ที่ใช้เก็บโค้ด แสดงผลงาน
GitHub เป็นเวปไซต์ที่ใช้สำหรับการนำโค้ดที่เราต้องการติดตามการพัฒนาไปฝากไว้เพื่อเป็น remote หรือที่เก็บโค้ดบน cloud สำหรับการทำงานร่วมกันหลายคน หรือการใช้เพื่อแสดงผลงานของเรา
เปิดบัญชี GitHub
การใช้งาน GitHub จะต้องมีการเปิดบัญชีเพื่อใช้บริการ และหากฝากโค้ดลงไปใน GitHub แล้วเราก็จะต้องเข้าบัญชีที่เปิดไว้เพื่อเข้าถึงโค้ดที่ฝากไว้ในบญชี
เปิดบัญชีเพื่อเริ่มใช้งานได้ที่นี่ https://github.com/signup
สร้าง repository
reporitory เป็นที่สำหรับการบันทึกโค้ดลงไป เป็นเหมือนโฟลเดอร์ที่ใช้บันทึกไฟล์ และโปรแกรมต่างๆ ลงไป ซึ่งเราสามารถใช้คำสั่งเพื่อดึงข้อมูลเหล่านี้ไปใช้ได้ทีหลัง และ repository ยังสามารถใช้เป็นที่เก็บโปรแกรมทั้งหมดเพื่อติดตามผลไว้ในที่เดียว ไม่ให้เกิดความซ้ำซ้อน
ขั้นตอนการทำงานกับ repo บนคอมพิวเตอร์
สำหรับการทำงานกับ repository บน github จะผ่านกระบวนการทำงานคร่าวๆ ดังนี้ คือ
เราจะทำงานกับไฟล์ที่ clone มาจาก repository ไม่ว่าจะเป็นการเพิ่มไฟล์ต่างๆ เปลี่ยนแปลงคำสั่งในโปรแกรมเดิม หรือลบไฟล์ใดๆ ออก บนคอมพิวเตอร์ของเราในโฟลเดอร์ที่เรา clone repository มา
การเปลี่ยนแปลงต่างๆ จะถูกตรวจจับโดย git
เราจะต้องทำการ "stage" การเปลี่ยนแปลงเพื่อยืนยันการเปลี่ยนแปลงที่เกิดขึ้น
เพื่อบันทึกการเปลี่ยนแปลงเราจะทำการ commit เพื่อยืนยันการเปลี่ยนแปลง
และสุดท้ายเราจะทำการ "push" การเปลี่ยนแปลงทั้งหมดขึ้นไปรวมกับ repository เดิมบน github
1) ติดตั้ง Anaconda
โดยโค้ดที่เราฝากเราจะสามารถนำมาใช้งานได้ผ่านคำสั่งที่เราเขียนผ่าน Anaconda Powershell ใน windows หรือ terminal ใน Mac
ซึ่งในบทเรียนของ Ultimate Python จะขอพูดถึงโปรแกรมที่เป็นส่วนหนึ่งของ Anaconda Platform ซึ่งผู้เรียนสามารถใช้โปรแกรมอื่นๆ ทดแทนได้
ดาวน์โหลด Anaconda ได้ที่นี่ https://www.anaconda.com/products/individual
2) สร้างโฟลเดอร์ และไปยังโฟลเดอร์ที่ต้องการใช้งาน
GitHub repository เป็นที่ที่ใช้บันทึกโค้ด สำหรับการใช้งาน จะต้องมีการ "clone" ข้อมูลลงมายังคอมพิวเตอร์ โดยเราจะสร้างเป็นโฟลเดอร์บบนคอมพิวเตอร์ และเลือกไปทำงานกับโฟลเดอร์ที่เราเลือกด้วยโปรแกรม Anaconda Powershell Prompt (หรือ command line อื่นๆ)
ทำงานกับโปรแกรม Anaconda Powershell Prompt สั่งคำสั่งเพื่อไปยังโฟลเดอร์ที่ต้องการทำงานด้วยด้วยคำสั่ง cd ตามด้วย 'ที่อยู่ของโฟลเดอร์'
cd 'ที่อยู่ของโฟลเดอร์'
3) เชื่อมต่อกับ repository
สำหรับการทำงานกับ repository บน GitHub เราจะต้องนำที่อยู่ของ repository มา และใช้คำสั่งบน command line เพื่อคัดลอก หรือ "clone" repository ให้มาอยู่บนคอมพิวเตอร์ของเรา เพื่อเริ่มบันทึกโค้ดลงน GitHub
ที่อยู่ของ repository
สำหรับการทำงานกับ repository ใดสามารถไปที่หน้าของ repository นั้น กดปุ่ม code สีเขียว และเลือก copy ตัวที่อยู่ออกมาได้เลย
คัดลอก repository มาลงบนคอมพิวเตอร์
สำหรัการคัดลอกเราจะใช้คำสั่งจาก git ที่ได้ลงก่อนหน้านี้ไปคัดลอกโปรแกรมมาจาก repository มาทำงานด้วย ผ่านคำสั่ง git clone ตามด้วยที่อยู่ของ repository
git clone 'ที่อยู่ของ repository'
4) ทำงานกับ repository บนคอมพิวเตอร์
เมื่อทำการ clone เรียบร้อยเราจะทำการย้ายโฟลเดอร์ที่ทำงานด้วยไปยังโฟลเดอร์ของ repository ที่ clone มา
สำหรับการย้ายไปทำงานกับโฟลเดอร์ที่อยู่ในโฟลเดอร์ที่ทำงานด้วยปัจจุบัน สามารถใช้คำสั่ง cd ตามด้วยชื่อโฟลเดอร์เพื่อเลือกเข้าไปยังโฟลเดอร์ที่สนใจได้เลย
cd 'ชื่อโฟลเดอร์'
สำหรับการย้ายไปทำงานกับโฟลเดอร์ใดๆ สามารถทำได้โดยการระบุที่อยู่เต็มๆ ของโฟลเดอร์ที่สนใจทำงานด้วยด้วยการใช้คำสั่ง cd ตามด้วยที่อยู่ของโฟลเดอร์
cd 'ที่อยู่ของโฟลเดอร์'
5) การแก้ไขข้อมูล และบันทึกลง github
status-add-commit
สำหรับการทำงานกับ repo เบื้องต้น จะผ่านคำสั่ง 3 คำสั่ง เบื้องต้นคือ status, add, commit
status
เมื่อมีการเปลี่ยนแปลงไฟล์ คำสั่ง หรือข้อมูลต่างๆ ใน repo ที่ลงอยู่ในคอมพิวเตอร์ การเปลี่ยนแปลงจะถูกตรวจจับ และเราสามารถดูการเปลี่ยนแปลงเบื้องต้นได้จากคำสั่ง git status
git status
จะเห็นการเปลี่ยนแปลงที่ยังไม่ได้จัดการเป็นชื่อไฟล์ที่แสดงเป็นสีแดง
add
สำหรับข้อมูลที่มีการเปลี่ยนแปลงเราจะต้องทำการ "stage" เพื่อเตรียมการเปลี่ยนแปลงสำหรับการอัพเดทไปยัง repo บน github ซึ่งเราสามารถใช้คำสั่ง git add . (. คือสัญลักษณ์ของตัวแทนของการเปลี่ยนแปลงทั้งหมดที่เกิดขึ้น หากไม่ต้องการเลือกทั้งหมดจะต้องระบุเป็นชื่อไฟล์ทีละไฟล์ที่เกิดการเปลี่ยนแปลง)
git add .
เมื่อทำการ add เรียบร้อย จะมีปรากฎชื่อไฟล์เป็นสีเขียว ที่แสดงให้เห็นว่าการเปลี่ยนแปลงในชื่อไฟล์สีเขียวพร้อมสำหรับการดำเนินการต่อแล้ว
commit
สำหรับข้อมูลที่เตรียม stage แล้ว เราสามารถยืนยันการเปลี่ยนแปลงโดยการ commit การเปลี่ยนแปลงเหล่านั้นเพื่อเตรียมบันทึกไปยัง repo บน github โดยผ่านคำสั่ง git commit -m "ข้อความอธิบายการเปลี่ยนแปลงที่กำลังจะบันทึก"
git commit -m "ข้อความอธิบายการเปลี่ยนแปลงที่กำลังจะบันทึก"
เมื่อ commit แล้ว เมื่อเรียก git status จะไม่ปรากฎชื่อเป็นสีแดง (ยังไม่ได้ stage) และไม่ปรากฎชื่อสีเขียว (ยังไม่ได้ commit)
ดูการเปลี่ยนแปลง (commit) ที่เกิดขึ้นแล้ว
ดูการเปลี่ยนแปลงที่มีการเปลี่ยนแปลงและบันทึกแล้วแบบย่อยด้วยคำสั่ง git log --oneline
git log --oneline
คำสั่งนี้จะแสดงการ commit ล่าสุดที่เกิดขึ้นแต่ละครั้งใน 1 บรรทัด จะเห็นการ ข้อความที่เราเขียนใน commit จะเข้ามาเป็นส่วนหนึ่งให้เราติดตามได้ง่ายๆ ว่าครั้งนั้นเราทำการบันทึก หรือเปลี่ยนแปลงข้อมูลอะไรไปบ้างแต่ละครั้ง
6) บันทึกการเปลี่ยนแปลงไปยัง repo บน github
สำหรับการเปลี่ยนแปลงที่ commit แล้วสามารถบันทึกการเปลี่ยนแปลงไปยัง github repo ด้วยคำสั่ง git push เพื่ออัพเดทเนื้อหาใน repo ด้วยการเปลี่ยนแปลงที่เกิดขึ้นบนคอมพิวเตอร์
git push
7) นำการเปลี่ยนแปลงจาก github ลงมาใช้
เมื่อ github มีการเปลี่ยนแปลงไปจากข้อมูลที่มีอยู่บนคอมพิวเตอร์ เราสามารถใช้คำสั่ง git pull เพื่อทำการดึงการเปลี่ยนแปลง ลงมาประกอบกับข้อมูลบนคอมพิวเตอร์
git pull
1 Kommentar