Git และ Git Flow


git คืออะไรใช้ทำอะไรแบบสั้นๆ
เมื่อไหร่ก็ตามที่เราไม่ได้ทำงานคนเดียว การใช้งาน git เป็นสิ่งจำเป็นขึ้นมาทันที พอเราเขียนโปรแกรมได้สักพัก เราพอจะมีโค้ดก็ต้องหาที่เก็บไว้บ้าง ปกติแล้วหากใครยังไม่รู้ ว่าจะเก็บไว้ที่ไหนก็คงหนีไม่พ้นในเครื่องของตัวเอง ให้ดีหน่อยก็คงเก็บไว้ใน google drive
แต่ในโลกของเราได้กำเนินสิ่งเรียกว่า git ขึ้นมาแล้ว มันสามารถทำหน้าที่เป็นตัวเก็บโค้ดได้ และความสามารถของมันที่โคตรเจ๋งเลยก็คือ git version control คือเราสามารถเก็บโค้ดได้หลายๆ version ได้นั่นแหละ คล้ายแก้เล่มโครงงานเลยที่เราชอบตั้งชื่อว่า เล่มแก้1 เล่มแก้2 เล่มแก้3 เล่มแก้4 เล่มแก้5
เนื้อหา
- เนื้อหา
- Git คืออะไรมันใช้ยังไง
- ดาวน์โหลด และ ติดตั้งโลด
- ตั้งค่าให้มันใช้ได้ซะหน่อย
- คำสั่งที่จะได้ใช้บ่อยๆ
- คำสั่งพื้นฐาน
- Git Flow
- แต่ละ branch ใช้ทำอะไร
- ไม่ต้องจำคำสั่งแล้ว
Git คืออะไรมันใช้ยังไง
Git สิ่งแรกที่เข้าในหัวก็คงเป็น github แต่จริงๆมันมีคู่แข่งด้วย เช่น gitlab bitbucket ใช้ได้เหมือนกัน แต่ข้อดีที่ต่างจาก github คือมันใช้งานกว่าถ้าทำเป็นทีม ที่ใช้ส่วนตัวก็ยังใช้ github นี้แหละเพราะใช้อยู่คนเดียว สามารถตั้ง public หรือ private ให้แต่ละ repository ได้ก็พอใช้ละ
repo หรือ repository มันเป็นเหมือนกับโฟลเดอร์นึงหรือโปรเจคนึงนั่นแหละ
การใช้งานจริงๆ ไม่ได้ยาก
git init
คือติดตั้ง git ลง repository นั้นๆgit add .
คือเพิ่มไฟล์ทั้งหมดgit commit -m "my comment"
คือเหมือนยืนยันว่าจะจัดเก็บ source code version นี้git push origin feature/my-branch-name-on-remote
คืออัพโหลด version นี้ไปเก็บไว้บน github, gitlab, bitbucket ขึ้นอยู่กับ origin ว่าเชื่อต่อ remote ไว้กับอะไร จริงๆแล้วไม่ได้ใช้คำสั่งนี้เองเลย เพราะใช้ extention ของ vscode กด ui เอาง่ายดี
ต้องตั้งค่า remote ก่อนถึงจะสั่ง git push ได้นะไม่งั้นมันไม่รู้จักว่าจะอัพโหลดไปที่ไหน
ดาวน์โหลด และ ติดตั้งโลด
โหลดได้จาก https://git-scm.com ติดตั้งก็กด next next next next next next ได้เลย
หลังจากติดตั้งเราสามารถใช้คำสั่งเพื่อเช็คได้
git --version
ตั้งค่าให้มันใช้ได้ซะหน่อย
หลังจากติดตั้ง เราต้องตั้งค่ามันซะก่อนจะใช้งาน
git config --global user.name "ชื่อที่จะใช้"git config --global user.email "อีเมลที่จะใช้"
สำหรับใครที่มีมากกว่า 1 user เช่นส่วนตัวกับของที่บริษัท แล้วอยากใช้แยกกันเราสามารถกำหนด repo ที่จะใช้ได้ด้วยคำสั่ง --local
git config --local user.name "ชื่อที่จะใช้"git config --local user.email "อีเมลที่จะใช้"
สามารถดูได้ว่าปัจจุบันเราใช้ user อะไร
git config user.namegit config user.email
git config --global user.namegit config --global user.email
git config --local user.namegit config --local user.email
หลังจากตั้งค่า user ที่จะใช้ได้แล้ว ก็ต้องทำการต่อ remote หรือเชื่อมระหว่างเครื่องคอมเรากับโค้ดใน git ที่อยู่บน online
git remote add origin url_remote_my_repository
พอเชื่อมแล้วสามารถใช้คำสั่งเพื่อเช็คได้
git remote -v
local repository ไฟล์ในเครื่องเรา
remote repository ไฟล์ที่อยู่บน online เช่น github, gitlab, bitbucket
คำสั่งที่จะได้ใช้บ่อยๆ
get init
เป็นคำสั่งใช้เพื่อกำหนดว่าจะใช้งานที่โฟลเดอร์นั้นๆ ใช้แค่ครั้งแรกตอนสร้างโปรเจคใหม่
mkdir myprojectcd myprojectgit init
git add
ใช้สำหรับเพิ่มไฟล์เข้าไปใน stage เช่น
git add index.html
git add .
git commit
ยืนยันการเปลี่ยนแปลงไฟล์ที่ถูก add ลงใน stage
git commit -m "ข้อความใช้อธิบายสิ่งที่เราทำ"
git push
เป็นการส่งไฟล์ที่ commit แล้วเข้าสู่ remote repository
git push
คำสั่งพื้นฐาน
-
git status
คือใช้ดูสถานะ -
git clone
คือ copy โปรเจคมาจากโปรเจคหลัก -
git fetch
คือใช้ดูว่าใน local กับ remote ที่เชื่อมไว้มีอัพเดทอะไรไหม มีใคร commit โค้ดที่ใหม่กว่าของเราปัจจุบันรึเปล่า -
git pull
คือดึงไฟล์ที่มีการเปลี่ยนแปลงใน remote มาอัพเดทใน local -
git branch
คือใช้ดู branch ทั้งหมดในเครื่อง -
git branch my-new-branch
คือสร้าง branch ใหม่ชื่อว่า my-new-branch -
git checkout my-new-branch
คือสลับไปยัง branch ที่ชื่อว่า my-new-branch -
git branch -D my-new-branch
คือใช้ลบ branch ที่ชื่อว่า my-new-branch -
git checkout -b my-new-branch
คือสลับและสร้าง branch ใหม่ที่ชื่อว่า my-new-branch กรณีที่ต้องการสร้าง branch ใหม้พร้อมกับสลับไปด้วยคำสั่งเดียว -
git merge my-new-branch
คือการรวม branch ที่ชื่อว่า my-new-branch เข้ามาใน branch ที่ใช้อยู่ปัจจุบัน (กำหนด branch ปัจจุบันจากคำสั่งgit chekout master
)
Git Flow
Git Flow (Gitflow Workflow) เป็นเพียงวิธีการหรือรูปแบบการใช้งาน git branch วิธีนึง ส่วนมากนำไปใช้ในการทำงานร่วมกันเป็นทีม เพื่อลดความสับสนการทำงานกับ branch ต่างๆ ข้อดีคือสร้างความเข้าใจตรงกันในทีมได้ดีและเป็นมาตรฐานที่ถูกใช้โดยหลายๆบริษัท โดยส่วนใหญ่แล้วจะแบ่ง branch เป็น 2 แบบคือ Main Branches กับ Supporting Branches
Main Branches
- master
- develop
Supporting Branches
- feature
- release
- bugfix
- hotfix
แต่ละ branch ใช้ทำอะไร
อธิบายคำว่า branch ก่อน จริงๆก็เป็นโค้ดเวอร์ชั่นๆนึงนั้นแหละ
-
develop
- เป็น branch ที่ใช้พัฒนางานเป็นหลัก
- มีโค้ดใหม่ที่สุด เพราะไม่ว่าจะเขียน feature อะไรใหม่ต้อง merge เข้า develop ทั้งหมด
-
feature
- เมื่อเราจะเขียนหรือพัฒนา feature ใหม่ให้แตก branch ใหม่จาก develop
- เขียนเพิ่มเข้าไปจนเสร็จจากนั้นก็ merge โค้ดเข้า develop แล้วลบ branch feature ทิ้ง ถ้าไม่ลบมันคงเป็นขยะเต็มไปหมดใน git ของเรา เพราะยังไงเราก็ไม่ใช้แล้ว
-
release
- เป็น branch ที่ถูกสร้างขึ้นจาก branch develop
- เป็น branch ที่ใช้สำหรับทดสอบโดย QA เพื่อที่จะทำการ Test ในขั้นสุดท้าย(UAT)ก่อนและแก้ bug ก่อนที่จะขึ้น production
-
bugfix
- เป็น branch ที่ถูกสร้างขึ้นจาก branch release
- แตกมาเพื่อแก้ bug หรือแก้ไขโปรแกรมบางส่วนก่อนขึ้น production
-
master
- เป็น branch สำหรับจัดการ source code เพื่อ deploy ขึ้นไปที่ production ให้กับผู้ใช้งาน
- ในส่วนนี้จะไม่ทำการแตกไปพัฒนางาน
-
hotfix
- ถ้าเจอ bug บน production จะทำการแตก branch ออกมาจาก master และทำการแก้ไขโดยด่วน ก็ตามชื่อมันเลย hotfix แก้ด่วน
- หลังจากที่ทำการแก้ไขแล้ว จะทำการ merge ไปที่ branch master และ branch develop ทันที
ไม่ต้องจำคำสั่งแล้ว
ถ้าใครใช้ VS Code อยู่แล้วลองโหลด extention มาลองใช้ได้เช่น
- Git Graph
- Git Lens
โปรแกรมก็มีให้ใช้นะแนะนำให้ลองใช้
- Sourcetree