By Arnon Puitrakul - 20 มีนาคม 2016
เมื่อสักปีที่แล้วได้ ไม่รู้ว่าจำกันได้หรือเปล่าว่า เราเขียนบทความเรื่องของ Version Control ตอนนั้นก็เล่าไปว่า เจ้า Version Control มันคืออะไร และมันดียังไง ทำอะไรได้บ้างอะไรทำนองนั้น ถ้าอยากลองกลับไปอ่าน [ตามลิงค์นี้เลย][0] จะได้รู้ที่ว่าของมันสักหน่อย แต่สำหรับคนที่เคยอ่านมาแล้ว หรืออยากจะข้าม ๆ มันไป วันนี้เรามาดู Version Control แบบที่เป็นที่นิยมอย่าง Git กันดูดีกว่า ว่ามันคืออะไร และใช้งานยังไง
Git เป็น Version Control ประเภทหนึ่ง (ย้ำนะว่าเป็น Sub Set ของ Version Control !!!) ที่เป็นระบบคอยเก็บความเปลี่ยนแปลงของไฟล์งานของเราเรื่อย ๆ ทำให้เราสามารถเรียกดูแต่ล่ะเวอร์ชั่นของไฟล์งานของเราได้อย่างง่ายดาย หรือดูได้แม้กระทั่งว่า แก้โดยใคร และเมื่อไหร่ได้อีกต่างหาก ลองนึกภาพเวลาเราทำงานเป็นทีมดูสิครับ มันจะวุ่นวายแค่ไหน ถ้าเราไม่ใช้ Version Control ความบรรลัยจะเกิดขึ้นแน่นอน เพราะต่างคนต่างแก้ไฟล์ที่อยู่ในเครื่องตนเอง และอีกคนก็ทำเช่นเดียวกันอีก ทำให้ไฟล์มั่วไปหมดเลย เพราะฉะนั้น การใช้ Version Control เป็นสิ่งที่ จำเป็น สำหรับการพัฒนาโปรแกรม ทั้งทำคนเดียว และเป็นทีมก็ตาม นะแจ๊ะ !
ก่อนที่เราจะใช้ Git ได้เราต้องทำการติดตั้งมันลงมาก่อน ถ้าเป็นฝั่ง Linux จะง่ายมาก ๆ เพียงแค่รันคำสั่งเพียงบรรทัดเดียวตามด้านล่างนี้ก็เรียบร้อยแล้ว
sudo apt-get install git-all
หรือถ้าเป็นในฝั่งของ OSX และ Windows ให้เข้าไป[ตามลิงค์นี้][2] เพื่อไปโหลด Installer มาและติดตั้งตามขั้นตอนกันได้เลย
หลังจากที่เราติดตั้งเสร็จเรียบร้อยแล้ว เราก็ต้องมา Config ตัว Username และ Password สำหรับการใช้ Git กันต่อ โดยการพิมพ์คำสั่งตามด้านล่างนี้ลงใน Terminal และเปลี่ยนเป็นชื่อและอีเมล์ของตัวเองได้เลย
git config --global user.name "NAME"
git config --global user.email "EMAIL"
ในวันนี้เราจะมาลองสร้าง โปรเจ็คแรกของเราง่าย ๆ เป็น Hello World โดยผมจะมี Folder นึงเก็บ Source Files ทั้งหมด โดยขั้นตอนแรก ให้เรา Change Directory ไปที่ Folder ที่เก็บ Source Files ก่อน และทำการสร้าง git repository โดยการพิมพ์คำสั่ง
git init
และเรายังสามารถเรียกคำสั่ง git status เพื่อทำการดูสถานะของโปรเจ็คเราได้ด้วย เช่น ตอนนี้ผมมี Source File อยู่ชื่อ main.c พอเรารัน git status ก็จะขึ้นดังนี้
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
main.c
nothing added to commit but untracked files present (use "git add" to track)
โดยสิ่งที่มันจะบอกเราคือ ไฟล์ไหนอยู่ในสถานะไหนบ้าง (เรื่องของสถานะ เดี๋ยวจะอธิบายตอนล่าง ๆ)
โดยปกติ ถึงแม้ว่าจะมีไฟล์อยู่ใน Folder ของโปรเจ็คเรา แต่ Git มันก็ไม่ได้ถือว่าไฟล์นี้จะใช้นะ เราจะต้องทำการไปเพิ่มมันเข้ามา เพื่อสั่งใน git มันทำการตามดูไฟล์นั้น ๆ ว่ามีความเปลี่ยนแปลงอะไรบ้าง โดยการใช้คำสั่ง git add เช่นผมจะเอาไฟล์ main.c เข้ามา โดยการรันคำสั่ง
git add main.c
จากการรันคำสั่งด้านบน จะทำให้ main.c ถูกนำเข้ามาใน git project ของเราแล้ว เราสามารถลองดูผลได้จากการรัน git status อีกรอบ
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: main.c
จะเห็นได้ว่า ในส่วนของ Untracked File ได้หายไปแล้ว เพราะเรา Add มันเข้ามาแล้วผ่าน git add ไปแล้วไง
จากหัวข้อเมื่อครู่ เราจะเห็นว่า ไฟล์แต่ล่ะไฟล์มันจะมีสถานะของมันอยู่ โดยเราสามารถแบ่งมันออกเป็น 4 สถานะได้แก่
จากที่ได้เล่าไปเมื่อกี้ มันก็จะกลายมาเป็นภาพด้านบนนี้เลย นั้นคือเราใช้ git add มันเข้ามา แก้ไฟล์ และ commit มันกลับไป ถึงประโยคนี้อาจจะชะงักไปว่า "เฮ้ย !! Commit คืออะไรว่ะ ?" ต้องอธิบายว่า เราเรียกการบันทึกการเปลี่ยนแปลงของไฟล์เราลงใน Git เราจะเรียกมันว่าการ Commit หรือถ้าเราพูดตามภาพนี้มันก็คือ การที่ไฟล์นั้นเปลี่ยนจากสถานะ Staged มาเป็น Unmodified อีกครั้งนั่นเอง โดยเราสามารถ Commit ได้โดยการใช้คำสั่ง git commit เช่นผมได้ทำการแก้ไฟล์ main.c ไปแล้ว ตอนนี้ต้องการที่จะ commit มันลงไป ผมก็ต้องรันคำสั่งตามด้านล่างนี้
git commit -m "Hello Name"
วิธีการใช้คือ git commit -m "MESSAGE" โดย MESSAGE คือข้อความที่เราต้องบอกว่า เราได้ทำการแก้ไขอะไรไป คร่าว ๆ อ่านแล้วรู้เลยอะไรทำนองนั้น หลังจากที่เรารันคำสั่ง commit ไปแล้วมันก็จะตอบกลับมาว่า มีการ Commit ไปกี่ไฟล์ และเปลี่ยนกี่จุด อะไรทำนองนั้น
[master (root-commit) af7c65b] Hello Name
1 file changed, 7 insertions(+)
create mode 100644 main.c
และเราสามารถดูได้ด้วยนะว่า ไฟล์ก่อนการ Commit และหลัง Commit มีอะไรเพิ่ม หรือถูกลบตรงไหนบ้าง บรรทัดไหน ตัวไหน โดยการรันคำสั่ง git diff ได้เลย เช่น
git diff
และสิ่งที่ได้ออกมาคือ
diff --git a/main.c b/main.c
index 13846d8..9247a70 100644
หลังจากเมื่อหลายอาทิตย์ก่อน Apple ออก Mac รัว ๆ ตั้งแต่ Mac Mini, iMac และ Macbook Pro ที่ใช้ M4 กันไปแล้ว มีหลายคนถามเราเข้ามาว่า เราควรจะเลือก M4 ตัวไหนดีถึงจะเหมาะกับเรา...
จากตอนก่อน เราเล่าเรื่องการ Host Website จากบ้านของเราอย่างปลอดภัยด้วย Cloudflare Tunnel ไปแล้ว แต่ Product ด้าน Zero-Trust ของนางยังไม่หมด วันนี้เราจะมาเล่าอีกหนึ่งขาที่จะช่วยปกป้อง Infrastructure และ Application ต่าง ๆ ของเราด้วย Cloudflare Access กัน...
ทุกคนเคยได้ยินคำว่า Mainframe Computer กันมั้ย เคยสงสัยกันมั้ยว่า มันต่างจากเครื่องคอมพิวเตอร์ที่เราใช้งานกันทั่ว ๆ ไปอย่างไรละ และ Mainframe ยังจำเป็นอยู่มั้ย มันได้ตายจากโลกนี้ไปหรือยัง วันนี้เรามาหาคำตอบไปด้วยกันเลย...
เคยมั้ยเวลา Deploy โปรแกรมสักตัว เราจะต้องมานั่ง Provision Infrastructure ไหนจะ VM และ Settings อื่น ๆ อีกมากมาย มันจะดีกว่ามั้ยถ้าเรามีเครื่องมือบางอย่างที่จะ Automate งานที่น่าเบื่อเหล่านี้ออกไป และลดความผิดพลาดที่อาจจะเกิดขึ้น วันนี้เราจะพาทุกคนมาทำความรู้จักกับ Infrastructure as Code กัน...