Version Control and Git From Zero to Hero : Part 3

บทความโดย ผศ.ดร.ณัฐโชติ พรหมฤทธิ์
ภาควิชาคอมพิวเตอร์
คณะวิทยาศาสตร์
มหาวิทยาลัยศิลปากร

การใช้งาน Git และ gitlab.cpsudevops.com

ในบทความนี้และบทความต่อไป เราสามารถฝึกการใช้ Git ได้จากเว็บไซต์ https://gitlab.com หรือ https://gitlab.cpsudevops.com ในขั้นแรกให้เรา Register โดยใส่ Full name, Username, Email และ Password แล้วกดลงทะเบียนดังภาพ

เมื่อ Login เราจะเห็นหน้าตาของ Gtilab ดังภาพด้านล่าง โดย GitLab เรียก Repository สำหรับเก็บ Version ของ Source Code ว่า Project ซึ่งเราจะทดลองสร้าง Project ชื่อ git101

สำหรับ GitLab จะมีค่า Default ของ Repository เป็น Private ซึ่งเหมาะสำหรับการพัฒนา Project ที่ยังไม่ต้องการเผยแพร่ Source Code เป็นสาธารณะ ขณะที่ Github จะมีค่า Default ของ Repository เป็น Public

`

Project ที่ถูกสร้างขึ้นจะยังไม่มีการเก็บ Version ใดๆ ซึ่งเราสามารเพิ่มไฟล์ README.md เพื่ออธิบาย Project ได้จากตรงนี้ หรือจะเพิ่มบน Local Host แล้วค่อย Sync กับ Remote Repository ก็ได้ (สำหรับการเริ่มต้นใช้งาน การเพิ่ม README.md บน Local Host น่าจะสะดวกกว่าครับ)

เพื่อจะใช้งาน Distributed Version Control System อย่าง Git บน Local Host เราจะต้องเชื่อมโยงกับ Remote Repository โดยใช้ URL ตามภาพด้านล่าง

ก่อนจะใช้งาน Git บน Windows หรือ Mac OS เราจะต้องมีการติดตั้ง Git Client จาก https://git-scm.com/downloads อย่างไรก็ตามถ้าผู้อ่านที่ใช้ Windows ต้องการใช้งาน Git แบบ Unix Command Line Based เหมือนกับในบทความนี้ ผมแนะนำว่าให้ท่านติดตั้ง Windows Subsystem for Linux (WSL) และ Ubuntu Distribution จาก Microsoft Store แทน โดยทำตามขั้นตอนต่อไปนี้

  • เปิด PowerShell แบบ Administrator แล้วติดตั้ง WSL ด้วยคำสั่งต่อไปนี้
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
  • Update WSL เป็น Version 2
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

wsl --set-default-version 2
  • ติดตั้ง Ubuntu Distribution (Ubuntu 18.04 LTS) จาก Microsoft Store (https://www.microsoft.com/store/apps/9N9TNGVNDL3Q)
  • ในครั้งแรกที่ใช้งาน เราจะต้องสร้าง Account ใหม่สำหรับ Ubuntu Distribution โดยการป้อน Username และ Password ซึ่งหลังจากติดตั้งแล้ว เราสามารถดู Version ของ Git ได้จาก Command Line ของ Ubuntu Distribution โดยใช้คำสั่งดังนี้
git version

ในการใช้งานครั้งแรก เราจะต้อง Config Git ให้จำ Username และ Email ด้วยคำสั่ง git config

git config --global user.name "nuttachot"
git config --global user.email "nuttachot@hotmail.com"

จากนั้นจึงสร้าง Folder  ของ Project ชื่อ "git101" บน Local Host และใช้คำสั่ง git init เพื่อเริ่มต้นการทำงาน

จากภาพด้านบน Git จะสร้าง Folder .git ภายใน Folder Project (git101) สำหรับเก็บ Local Repository ให้เอง ซึ่งเราจะมองไม่เห็น Folder ที่มีการตั้งชื่อด้วย "." นำหน้าอยู่แล้ว สำหรับบน Unix Command Line Based จะต้องใช้คำสั่ง ls -a หรือ ls -al เพื่อดู Folder .git ดังภาพด้านล่าง

หลังจากนั้นเราจะเชื่อมโยงกับ Remote Repository โดยนำ URL มาจาก GitLab Server ที่ได้ก่อนหน้านี้ โดยใช้คำสั่งด้านล่าง

git remote add origin http://gitlab.cpsudevops.com/nuttachot/git101.git

เป็นอันเสร็จสิ้นสำหรับการ Config Git เพื่อการใช้งาน ต่อไปจะเป็นตัวอย่างการ Check-In Source Code กับ Local Repository และการ Sync ไปยัง Remote Repository ที่ gitlab.cpsudevops.com ครับ

ให้เราสร้างไฟล์ hello.py โดยใช้ Editor ที่ถนัด

ไฟล์ที่สร้างใหม่จะยังไม่ถูก Track ในระบบ Git เราสามารถดูสถานะของไฟล์ใน Project โดยใช้คำสั่ง git status ดังภาพด้านล่าง ไฟล์ที่มีสถานะ Modified หรือยังไม่ถูก Track จะแสดงด้วยสีแดง

เพื่อจะ Track ไฟล์ hello.py และส่งไปยัง Staging Area เราจะใช้คำสั่ง git add ซึ่งไฟล์ที่มีสถานะ Staged จะแสดงด้วยสีเขียว

git add hello.py

เราจะใช้คำสั่ง git commit เพื่อจัดเก็บไฟล์อย่างถาวร ด้วยการสร้างเป็น Version ของ Source Code และใช้ parameter -m สำหรับใส่ Message Log อธิบายการ Commit แต่ละ Version

git commit -m 'First commit'

Git จะเรียก Version ต่างๆ ของ Project ว่า History, เพื่อดู History ของ Project เราจะใช้คำสั่ง git log

จากภาพด้านล่างเราได้ Commit ไปแล้ว 1 Version ซึ่ง Git จะใช้ค่าจาก SHA-1 Hash เป็น Commit ID

จากภาพ History ด้านบน ทุกคนในทีมจะสามารถเห็นว่าใครเป็นคน Commit และ Commit ที่ Branch ไหน (สำหรับเรื่องของ Brach เราจะพูดถึงอย่างละเอียดใน Part ที่ 6 ครับ) โดย Branch Defult ที่เรา Check-In คือ Master Branch

เพื่อ Sync History กับ Remote Repository เราจะใช้คำสั่ง git push -u origin master และยืนยันตัวตนกับ GitLab Server ด้วย Username และ Password

เมื่อไปดูที่ http://gitlab.cpsudevops.com/nuttachot/git101.git จะพบว่ามีการ Sync ข้อมูลกับ Remote Repository เรียบร้อยแล้ว ในครั้งต่อไปเราสามารถ Push โดยใช้เพียงคำสั่ง git push สั้นๆ เพราะเราได้ใช้ parameter -u เพื่อจำว่าจะ Push ไปที่ Remote ตัวไหน และ Branch ไหน

การดู History อย่างย่อเราจะใช้คำสั่ง git log --oneline ครับ ซึ่งเราจะเห็นว่าขณะนี้เรา Check-Out อยู่ที่ Master Branch และ Commite ID 0ed543c จาก HEAD Pointer

ขอขอบคุณ Nipa.Cloud ที่ให้การสนับสนุน Environment ในการเรียนการสอน
รายวิชา Dev-Ops and Cloud Engineering 101