สวัสดี Git และ GitHub

(คู่มือสำหรับโปรแกรมเมอร์เบื้องต้น ไม่รู้ถือว่าเชยนะขอบอก)

*** เขียนค้างไว้ไม่เสร็จ ขึ้นอยู่กับอารมณ์และวันว่างๆ

เกริ่นนำเรื่อง Git

Git อ่านว่า "กิท" ไม่ใช่ 'กฤษณ์' ที่เป็นดารา แต่เป็น… (เดี่ยวเฉลย)

ก่อนอื่นขอเท้าแชร์ให้ฟัง …เฮยๆ ไม่ช่ายแหละ ต้องเท้าความให้ฟัง ถึงท่านที่เป็นโปรแกรมเมอร์ (หรือไม่ได้เป็นก็ไม่เป็นไร แต่ถ้าน่าตาดีถือว่าผ่าน) พี่ๆ เพื่อนๆ ลองนึกถึง ตอนที่เราพัฒนาซอฟต์แวร์เป็นทีม มีโปรแกรมเมอร์ 2-3 คน หรือ 5-10 หรือ 10-100 คน หรือมากกว่านั้น เวลาที่พวกเราต้องยุ่งกับซอร์สโค้ดของโปรเจคเดียวกัน …คิดดูดิ ยิ่งหลายมือ ปัญหาก็จะมากความใช่ป่ะ!

นี้ยังไม่รวมถึง เวลาพวกเราต้องแบ่งเวอร์ชั่นของซอฟต์แวร์ เช่น เวอร์ชั่น release, เวอร์ชั่น fix bugs, เวอร์ชั่นยิบย่อย …โอ้ย!สารพัด แค่นี้ก็ชวนให้ปวดหัว เวลาจัดการโค้ดโปรเจคก้อนเดียวกันใช่ไหมล่ะ?

ด้วยเหตุนี้ Git จึงอุแว้อุแว้! …ถือกำเนิดมาเพื่อแก้ปัญหาข้างต้นครับผม และถ้าใครเคยเขียนวิชา Software engineer มา (วิศวกรรมซอฟต์แวร์) หัวข้อเรื่อง "Software configuration management" หรือตัวย่อที่เขียนได้เป็น "SCM" หรือ "s/W CM" คงจะรู้จัก Version Control กันดี (แปลตรงตัว "ตัวควบคุมเวอร์ชั่น")

สำหรับคำว่า Version control บางทีก็เรียกว่า Revision control หรือ Source control ซึ่งคำพวกนี้หมายถึง การบริหารจัดการกับเอกสารต่างๆ ในทีม เมื่อเกิดการ changes หรือเกิดการเปลี่ยนแปลงต่างๆ ภายในเอกสารขึ้นมา

และเจ้า Git ที่ว่านี้ มันก็คือระบบซอฟต์แวร์ ที่ช่วยเราเรื่อง Version Control

ถ้าใครไม่รู้จักคำว่า Version Control ลองอ่านลิงค์เหล่านี้ดูได้น่า

Version Control

ทำไมยุคนี้เราควรรู้จัก

ถ้าพูดตรงๆ นะ จริงๆ แล้วซอฟต์แวร์ที่จัดการเรื่อง Version Control ถือว่ามีหลายเจ้ามาก ยกตัวอย่างเช่น CVS, Subversion(SVN) เป็นต้น แล้วทำไมต้องรู้จัก Git ที่ว่านี้?

...เหตุผลหนึ่งก็คือ ความนิยม เพราะตอนนี้บริษัทไอทีระดับโลกใช้กันเยอะ ลองดูรูปต่อไปนี้ข้างล่าง แล้วจะรู้ว่าพี่บึมเจ้านั้นใช้บ้าง ซึ่งนี้คือเหตุผลที่พวกเราควร …"รู้ไว้ใช่ว่าใส่บ่าแบกห่าม"

บริษัทและโปรเจคที่ต้องใช้ Git (ที่มารูป https://git-scm.com/)

ศัพท์พื้นที่ต้องรู้

ถ้าจะอ่านเนื้อหาต้องไปนี้รู้เรื่อง ต้องรู้จักคำๆ นี้ คำว่า “รัก” มันคืออะไร …พิมพ์ผิดๆๆๆ คุณต้องรู้ว่าพวกนี้

  1. Repositories
  2. Branches
  3. Commits
  4. Pull Requests

แต่ตอนนี้ขออุ๊บไว้ก่อน จะทยอยแทรกคำอธิบายในหัวถัดไป (ก็เค้าไม่รู้จะอธิบายให้ตัวเองเห็นภาพยังไงนี้น่า-_-)

Repository คืออะไร

ถ้าพูดถึง “Repository” แปลว่า "คลังเก็บ, สถานที่เก็บ (ข้อมูลดิจิทัล ฐานข้อมูล) แหล่งที่อยู่ (เว็บไซต์)" โดย สวทช.

ส่วน Repository ในที่นี้มันคือคลังแสง เอาไว้เก็บไฟล์ซอร์โค้ดของเราไงครับ แต่มันไม่ใช่แค่เก็บโค้ดเราอย่างเดียวหรอกนะ มันเก็บไฟล์ได้ทุกประเภท ตั้งแต่สักเบือยันเรือรบ เช่น โฟลเดอร์, รูปภาพ,วีดีโอ, ไฟล์เสียง, excel, power point, ไฟล์เท็กซ์, ไฟล์ข้อมูล …พูดง่ายๆ อะไรที่เป็นไฟล์โปรเจคเรา ก็ยัดเก็บไว้ในนี้แหละ เพื่อแชร์ให้ลูกทีมมาอ่าน หรือเข้ามาแก้ไขที่จุดเดียวกันไปเลย

What is repository

แล้ว GitHub คืออะไร

เห็นหัวข้อบทความ มันจ่าหัวตัวโตๆ กล่าวถึง Git กับ GitHub ซึ่งบางคนคงได้ยินสองคำนี้ควบคู่กัน ยังกับคู่แฝดปลาท่องโก๋

แล้ว GitHub มันคืออะไร ?

คำตอบ มันก็คือเว็บกลางที่ให้บริการ Repository โดยเราไม่ต้องต้องหาเครื่องเซิร์ฟเวอร์ เอาไว้ทำ Repository ให้เสียเวลา

แน่นอน! ส่วนใหญ่โปรเจคที่นำมาเก็บไว้ที่ GitHub ล้วนมักเป็น Opensource เสียด้วยซิ และรูปข้างล่าง ก็คือบริษัทระดับโลกที่ Opensource โปรเจคตัวเอง มาไว้ที่นี้กันตรึมเลย

บริษัทที่ใช้ GitHub

การใช้ GitHub เบื้องต้น

ต้องมีแอคเคาทน์ของเว็บ GitHub

ไปที่เว็บ GitHub.com เปิดแอคเคาท์น์เสียก่อน ก็จะเห็นตามรูป ซึ่งวิธีสมัครง่ายๆ คงไม่แนะนำอะไรมาก

สร้างแอคเคาทน์

สร้าง Repository ขึ้นมา

เมื่อล็อกอินแอคเคาท์เข้าไปที่เว็บ GitHub แล้ว ก็น่าจะเห็นมุมขวามือ ให้คลิกเครื่องหมาย "+" ต่อด้วยกด "New repository"

สร้าง repository

จากนั้นก็จะเห็นหน้าถัดไปทำนองนี้

ตั้งชื่อ repository

* ตรง Repository name -> ชื่อของ Repository ตั้งเป็นอะไร ก็ได้ ซึ่งในตัวอย่างนี้ ตั้งเป็น "learning-git"
* ช่อง Description จะใส่หรือไม่ก็ได้
* แนะนำให้ติ๊กถูก "Initialize this repository with a README"
* หลังจากนั้นก็กด "Create repository"

หลังจากนี้ก็จะถือว่าเสร็จแล้วตามรูปข้างล่าง และในตัวอย่างนี้ผมก็จะได้ URL เป็น https://github.com/adminho/learning-git เอาไว้เข้าถึง Repository ที่สร้างขึ้นมานั้นเอง

repository

ใช้งานแบบ GUI

(pending.....)

ใช้งานผ่าน Command line

(pending.....)

command lind git

อ้างอิง