git-logo

Git คืออะไร ?

หลายคนอาจจะได้ยินพวก devloper คุยกันเรื่อง Git และอาจจะงงว่า Git คืออะไร ? แต่สำหรับ programer หรือ developer จะคุ้ยเคยกันดี ตามความหมายมันคือ version control system (VCS) ที่ซึ่งไว้สำหรับเก็บข้อมูล หรือ code ใน computer file รวมถึงเป็นศูนย์กลางหรือ server สำหรับรวมกันทำงานใน file ชุดนี้ นิยมใช้กันในกลุ่ม software developer แต่ในความเป็นจริงมันไม่เพียงแต่เก็บข้อมูลแต่เฉพาะ text file แต่มันสามารถเก็บข้อมุล file ชนิดไหนก็ได้ด้วย และทำหน้าที่เป็นที่แจกจ่ายควบคุม version ของ file นึกถึงวิธีการทำงานของ developer ที่ต้องเขียน code ให้

ลองนึกถึงวิธีการทำงานของ developer ที่ต้องเขียน code ให้กับ project หนึ่งที่ใช้เวลาเป็นเดือน และทีมงานหลายคนช่วยกันเขียน แน่นอนมันควรจะต้องมีศูนย์กลางที่คอยเก็บ code ที่ทุกคนสามารถเข้าถึงมันได้ และหลังจากเขียนเสร็จก็ต้องมีการนำไปเทสก่อน ซึ่งถ้าเทสไม่ผ่านก็ต้องย้อนกลับไป เอา version เก่ามาแก้ใหม่ หรือต่อให้ เทสผ่าน แต่พอใช้ไปสักพักเจอ bug ก็ต้องย้อน version กลับมาแก้ใหม่อีกครั้ง สักเกตุไหมว่า ศูนย์กลางที่ว่านี้นอกจากจะทำหน้าที่แค่เก็บข้อมูลแล้ว ยังต้องสามารถระบุ version แต่ละจุดที่มีการ save หรือที่เรียกกันว่า commit ไว้ด้วย เพื่อให้สามารถดึง code ย้อนหลังแต่จะ version กลับมาแก้ไขหรือเขียนใหม่แทนอันเดิมได้ ซึ่งทั้งหมดนี้คือสิ่งที่ Git จะสามารถทำให้ได้

 

ประวัติของ Git

Git ถูกสร้างขึ้นโดย Linus Torvalds ในปี 2005 ชื่อนี้อาจจะคุ้นตากันเพราะเค้าคือ ผู้คิดค้น Linux นั้นเอง ซึ่งที่เค้าคิดค้น Git ขึ้นมานั้นก็เพื่อเอาไว้ใช้ พัฒนา Linux kernel เพราะมันเป็น open source ซึ่งมี developer จำนวนมากร่วมกันเขียน และปรับแต่งกัน มันทำให้เค้าต้องทำ Git ขึ้นมาเพื่อช่วยให้ code ที่ร่วมกันเขียนขึ้นมา ไม่ทับกันมั่วนั่นเอง

 

การทำงานของ Git

หลักจากทราบกันแล้วว่า Git คืออะไร มาดูการทำงานของ Git กัน เริ่มต้นด้วยการเพิ่ม feature ใหม่ขึ้นมา เราจะเรียกมันว่า feature branches

FeatureBranches

 

สังเกตุว่า feature branches ได้แยกออกมาจาก develop branch หลังกจากแก้ไขเสร็จแล้วก็จะทำการ merge กลับเข้ามา develop branch

 

เมื่อถึงเวลาที่จะประกาศ release ใหม่ ก็จะมีการสร้าง release branch ออกมาจาก develop

ReleaseBranch

 

Code ใน release branch ถูก deploy ลงใน testbed เพือทดสอบว่าปัญหาถูกแก้ไขแล้ว ซึ่งการเทสก็จะวนเป็น deploy -> test -> fix -> redeploy -> retest จนได้ผลที่พอใจที่จะส่งให้ลูกค้า

และเมื่อ release พร้อมแล้ว release branch จะถูก merge เข้าสู่ master พร้อมกับ develop เพื่อให้มั่นใจว่าการเปลี่ยนแปลงครั้งนี้จะไม่ทำให้ release branch ตกหล่นหายไป

MasterBranch

 

Master branch จะถูกติด release code ก็ต่อเมื่อเฉพาะการ commit ที่ master ถูก merges จาก release branch และ hotfix branch เท่านั้น โดย hotfix branch ถูกใช้เฉพาะเหตุเร่งด่วนที่ต้องแก้ไขเท่านั้น

HotfixBranch

branch จะแยกออกมาโดยตรงจาก master branch และเมื่อแก้ไขเสร็จก็จะถูก merge กลับเข้าทั้ง master และ develop เพื่อให้มั่นใจว่า hotfix จะไม่เกิดหายไปช่วงที่ release ถัดไปจะทำต่อ

 

 

การติดตั้ง Git

1. Install Git จาก repository

เราสามารถ download ได้จาก Git website ได้โดยตรงแต่ ถ้าเป็น Linux เราสามารถ download และ install ผ่าน reponsitory ได้เลยเช่น Ubuntu

$ sudo apt-get install git

 

2. Configure Git

เราสามารถ set configure name, mail ผ่าน command line ได้หลัง install เสร็จ

$ git config --global user.name "YOURNAME" 
$ git config --global user.email "your@email.com"

ตรวจเช็ก configure

$ git config --list

 

การใช้งาน Git

1. สร้าง repository

# สร้างใหม่
$ git init

# Clone จาก ของเก่าที่ทำงานอยู่
$ git clone <path to repo>
$ git clone /Users/mike/Documents/liquidlight/start-git-with-ll
$ git clone git@github.com:liquidlight/start-git-with-ll.git

 

2. สร้าง branch

เริ่มต้นก่อนจะแก้ไข code เราควรสร้าง branch ออกมาใหม่เพื่อไม่ให้การแก้ไขนี้ กระทบกับ code ปัจจุบันที่ใช้งาน

list branch ที่อยู่ตอนนี้

$ git branch

สร้าง branch ใหม่ที่ชื่อว่า devlop

$ git branch develop

แต่การสร้าง branch ไม่ได้หมายความ ว่าระบบจะย้ายเราไปอยู่ branch ใหม่เลย เราต้อง checkout ออกก่อน

$ git checkout develop
# หรือ เราสามารถ สร้าง branch พร้อมกับ checkout ด้วย
$ git checkout -b develop

 

3. เช็กข้อมูลภายใน branch

เช็ก list file ที่มีแก้ไข รวมถึง file ที่มีการ add, delete หลังจาก commit ล่าสุด

$ git status

เช็กข้อมูลใน file ที่มีการแก้ไข ซึ่งถ้าไม่ใส่ชื่อ file ก็จะ list มาทั้งหมด

$ git diff <filename>

 

4. การแก้ไขข้อมูล file

การเพิ่ม file

# filepath สามารถใส่ชื่อ file หรือ ใส่เป็น folder ก็ได้
$ git add <filepath>

การลบ file

$ git rm <filename>
# แต่ถ้าต้องการ ลบแค่ track ของ git ไม่ใช่ลบออกจาก diretory จริง
$ git remove --cached <filename>

กรณีต้องการกู้ file ที่ลบไปแล้ว

$ git checkout <filename>
# หาก file ถูกลบ และ add กลับเข้ามาใหม่แล้ว
$ git reset <filename>
# ส่วนถ้ามีการ commit ไป และต้องการย้อยกลับไป commit ก่อนหน้า
$ git reset --soft HEAD~1

 

5. การ commit

$ git commit

หลังจากนั้น git จะเปิด editor file ให้เราใส่ commit message เพื่ออธิบาย  และอย่าลืมเว้นบรรทัดระหว่าง title กับ body

A short commit title

A nice, handy explanation of why I made the change,
and what problem it solved.

หลักจากนั้น จะแสดงผลลัพธ์การ commit

[master  87jk2ed] Commit title
  2 files changed, 48 insertions(+), 1 deletion(-)

 

6. ตรวจสอบ log

หากต้องการเช็ก commit บน branch ก่อนหน้านี้ ซึ่งจะแสดงการ commit ทั้งหมดออกมา

$ git log

 

 

Author: Suphakit Annoppornchai

Credit: https://saixiii.com,https://www.liquidlight.co.uk

2 Thoughts to “Git คืออะไร Git คือ ศูนย์จัดเก็บข้อมูลการเปลี่ยนแปลงของ file”

  1. […] Git คืออะไร สำคัญอย่างไร ที่นี้ถ้าเคยได้ยิน Git […]

  2. […] โดย code นี้ถูกเก็บใน Git บน GitHub ซึ่งสามารถเข้าไป download กันได้ free […]

Leave a Reply