git

แบ่งปันสิ่งทีได้จากการเข้าร่วม อบรมคอร์สเรียน Source Code Management ด้วย Git

หลังจากที่ไม่ได้อัพเดทเนื้อหาเพิ่มมานานมาก

และเมื่อช่วงวันหยุดสุดสัปดาห์ที่ผ่านมาได้เข้าร่วมอบรมคอร์สเรียน Source Code Management ด้วย Git ที่ SPRINT3R [n.] (ซพรินเทอร์) ซึ่งบอกได้คำเดียวว่าคุ้มมากจริงๆ มันก็คุ้มตั้งแต่ได้เข้าไปเรียนตั้งแต่วันแรกแล้ว เรียนฟรี อาหารฟรี สอนดีเป็นกันเอง TA เยอะไม่เข้าใจติดปัญหาอะไรถามได้ตลอดเพราะ TA จะเข้ามาประกบติดตัวต่อตัวช่วยเหลือจนกว่าเราจะเข้าใจ หรือแม้แต่ติดปัญหาเรื่อง ใด ๆ ก็จะไปหาคำตอบให้จนได้ สำหรับการเรียนที่ SPRINT3R [n.] (ซพรินเทอร์) นี้บอกได้คำเดียวว่าการได้เข้ามาเรียนคุ้มทุกคอร์สครับ คอร์สเรียนเขามีคุณภาพจริง ๆ

คอร์สเรียน   Source Code Management ด้วย Git (ระยะเวลา 2 วัน ช่วงวันเสาร์ที่ 12 กันยายน พ.ศ. 2558 – วันอาทิตย์ที่ 13 กันยายน พ.ศ. 2558) ณ SPRINT3R [n.] (ซพรินเทอร์) เขาบอกว่ารอบนี้เป็นรอบคืนกำไรสู่สังคม

เนื้อหาคอร์สเรียน

  • Source Code Managment(SCM) คืออะไร?
  • ทำไมเราต้องใช้ SCM และการวางกลยุทธ์
  • SCM ด้วย Git
  • Git คืออะไร?
  • คำสั่งพื้นฐานสามัญประจำบ้านของ Git สำหรับการนำไปใช้งานได้เลย
  • Git กับ Continuos Integration ด้วย Jenkins และ Repository Server
  • อุปนิสัยใจคอและกมลสันดานที่ต้องมีในการทำ SCM
  • อื่นๆ แล้วแต่คนสอนที่จะเพิ่มให้เข้าไป

วันแรกของการเข้าเรียน

ช่วงเข้าเมื่อจำนวนนักเรียนพร้อมก็เริ่มกันเลย

ทีมงานของ SPRINT3R นำโดยพี่หนุ่มแนะนำทีมและพูดเกริ่นนำเรื่อง GIT นั้นว่าคืออะไร มีปีะโยชน์อย่างไร แต่สิ่งที่จำเป็นมากเมื่อผู้ทีใช้งาน GIT จำเป็นต้องใส่ใจมากในการนำ GIT เข้ามาใช้ เรียกว่าถ้าใช้ GIT จำเป็นต้องทำ 4 ข้อนี้

1. ตกลงทีมเรื่องโครงสร้างของ sources code พูดถึงเรื่องโครงสร้างของ source code ของ Project ที่เราพัฒนาว่าจะวางโครงร่างอย่างไร มีไฟล์ มีโครงสร้างอย่างไรบ้าง

source code stucture 2.  ตกลงเรี่องการใช้งาน Feature GIT เรื่องนี้ดูเป็นเรื่องธรรมดาแต่ถ้าเมื่อการพัฒนา Project ใหญ่ ๆ จำเป็นมาก ไม่ว่าจะเป็นเรื่องการแบ่ง Branch การทำงานออกเป็นส่วนๆ เพื่อที่จะติดตามการพัฒาได้ง่ายและนวมถึงคำสั่งพื้นฐานของการใช้งาน GIT เบื้องต้นด้วยเช่น git add,git commit,git push,git pull,… และอื่น ๆ อีกมากมาย

3. การ Merge code บ่อย ๆ เป็นการดูแลรักษาประวัติของการพัฒนาของ branch หลักของการพัฒนา และ ทำให้เห็นประวัติต่างๆ ในการพัฒนา รวมถึงเรื่องการติดตามของประวัติต่างๆ ของการพัฒนา หรือ commit ด้วย

4. เรื่อง commit message นั้นถือเป็นเรื่องจำเป็นมาก ๆ เพราะอย่างน้อยผู้พัฒนาคนอื่นมาดูการ commit code ครั้งนั้นและสามารถเข้าใจได้ง่านว่า นักพัฒนาคนที่ commit code มาเขาได้เปลี่ยนแปลง code อะไร ส่วนไหนไปบ้าง และการใส่ message ที่ดีจะมีประโยชน์ในภายหลังแน่ ๆ เพื่อ git มี Feature การดู log history ได้ ฉะนั้น message ดีจะช่วยให้เรา filter การ message เพื่อหาสิ่งใดสิ่งหนึ่งได้ง่ายๆ

มาดูภาพกาทำงานของ GIT กันก่อนเพื่อความเข้าใจ และจะได้อ่านเนื้อหาต่อไปได้เข้าใจยิ่งขึ้น

git_model

เมื่อเกริ่นเนื้อหาของ GIT กันได้คราว ๆ พอเข้าใจแล้วก็มาเริ่มการใช้งาน GIT กันเลย

 

เริ่มต้นก็ต้องไปติดตั้ง GIT ในเครือง Local ของเราก่อน

1. ลิ้งการ Download GIT :: GIT-SCM

หลังจากติดตั้งเสร็จก็ให้เปิด Git Bash ขั้นมาจะได้หน้าตาแบบนี้ (ขอพูดในเวอชั่นของ Windown นะครับ)

git_bash

 

2. เริ่มคำสั่งการใช้งาน พื้นฐาน สร้าง local repository กันก่อน

$ git init

$ git status

คำสั่ง git status จำเป็นมากครับ เพื่อดูสถานะของการทำงาน ณ ปัจจุบันเลยว่าตอนนี้เราทำอะไรอยู่

3. ต่อไปลองสร้างไฟล์เพื่อทดสอบ (สร้างไฟล์อะไรก็ได้ คิดไม่ออกก็ hello.txt ไปก่อน)

4. เพิ่ม file ทดสอบเข้า stage area เพื่อรอการ commit code ไปยัง local repository โดยใช้คำสั่ง

$ git add hello.txt

5. เมื่อเรา coding จนพอใจและ add file ไปเก็บไว้ที่ stage area จนคิดว่าพอแล้วก็ต้อง นำไฟล์เข้า local repository ซะที โดยใช้คำสั่ง

$ git commit -m “create file hello.txt”

มาถึงขั้นตอนนี้ ไฟล์ทั้งหมดที่เราได้ add เข้าไปจะมาเก็บใน local repository เรียบร้อยแล้ว

6. เนื่องจาก local repository ยังเป็นการเก็บไฟล์ไว้ที่เครื่องเราเครื่องเดียวเท่านั้น ดังนั้นถ้าอยากให้ทีมพัฒนาของเราได้ source code ชุดนี้เราต้องทำการ push source code เหล่านี้ไปยัง remote repository โดย workshop ครั้งนี้ขอใช้ github ที่กำลังโด่งดังอยู่ในตอนนี้ ก็ให้เราสมัครให้เรียร้อย สำหรับคนที่ยังไม่มี account github เป็นของตัวเองก็ไปสมัครได้ ไม่มีค่าใช้จ่ายในการสมัคร และสร้าง remote repository ให้เรียบร้อย

 

 

github_create_project_day1

 

github_link_remote

ได้ remote repo เรียบร้อยแล้วก็ copy link มาเพื่อเอามาเชื่อมต่อกับ local repo ในเครื่องเรา และใช้คำสั่ง

$ git remote add origin [email protected]:pool13433/day-11.git

เท่านี้ remote repo และ local repo จะรู้จักกันแล้ว หลังจากนั้นก็ push เพื่อเราไฟล์จาก local repo ไปยัง remote repo โดยใช้คำสั่ง

$ git push origin master

เราก็จะได้ source code ในเครื่องเรา เหมือนกับ code บน server github เรียบร้อยแล้ว

$ git log

คำสั่ง git log เอาไว้ติดตามดู history ของการทำงาน git ว่าเราทำอะไรผ่านไปแล้วบ้าง

 

เมื่อลองใช้งานคำสั่งได้กันบ้างแล้วเหล่าพี่ ๆ sprint3r ก็จัด workshop เล็ก ๆ มาให้เล่นกันเล่น

และก็จบไปสำหรับวันแรกของการเรียน GIT

 

วันที่ 2 ของการเรียน git

วันนี้เริ่มด้วยการเอาเนื้อหาของการเรียน class เมื่อครั้งที่แล้ว (ก็วันเสาร์แหละครับ) มาสรุปทบทวนกัน และพี่ปุ๋ย (Somkiat.cc)ก็มาพูดถึงความสามารถอื่น ๆ ของ GIT ตัวอย่างเช่น

การ filter ดู history log จาก message,date,… ต่างๆ อีกมากมาย

ช่วงบ่ายทางทีมจัด workshop มาให้ทำกัน ครั้งนี้จะได้เริ่มรวมทีมเพื่อใช้งาน git กับ project จริง ๆ แล้ว

โดย workshop จะมีข้อมูลว่า

  • มีการตั้งโจทย์ หรือเรียกว่า requirement ของ user ก็ว่าได้
  • ให้รวมทีมกันทำโดยให้ระยะเวลาในการพัฒนา 3.30 ชม.
  • โดยเมื่อหมดเวลาจะต้องมีงานส่ง

หลังจากระยะเวลาได้ผ่านไปเรื่อย ๆ ระหว่างนั้นพวกเราก็สร้าง Project ที่พัฒนาด้วยการใช้ git ก็ดำเนินการไปเรื่อย ๆ เริ่มพบปัญหา เริ่มได้พูดถกเถียงปัญหา ได้ร่วมกันช่วยแก้ปัญหา หาแนวทางแก้ไขปัญหาร่วมกัน สุดท้ายหมดเวลา พวกเราก็มีผลงานส่งทันตามกำหนด (ฺBUG นิไม่ต้องถาม เพียบครับ)

หลังจากจบการทำ workshop สุดท้ายทุกคนก็สรุปความรู้ที่ได้จากการร่วมกันทำ workshop นี้ในความรู้สึกของแต่ละคน สิ่งนี้ทำให้เราได้เห็นความคิดของเพื่อน ได้มุมมองใหม่ๆ และสุดท้ายได้เพื่อนใหม่ๆ เพียบ

 

เท่าที่ผมได้สัมผัสกับ git ในช่วงระยะเวลา 2 วัน (สัมผัสแบบการพัฒนาเป็นทีม ปกติใช้งาน git คนเดียว) สิ่งที่ดีๆ หลาย ๆอย่างของ git ทำให้การพัฒนา project ของเราเป็นระเบียบและเป็นแบบแผนที่ดีมาก ผมเลยอยากแนะนำ เพื่อน ๆ ให้เริ่มลองใช้งานกับมันดู ถ้าใครยังไม่เริ่มก็ให้เริ่มตั้งแต่วันนี้ เพราะ git จะทำให้ชีวิตของคุณมีประสิทธิภาพมากขึ้น จริงๆ

เครดิต รูปภาพประกอบ :: http://backlogtool.com/git-guide/en/intro/intro1_2.html

 

แชร์ประสบการณ์เข้าร่วมงาน Git with Workshop one-day crash course

git_logo

GIT (Version Control)

วันนี้มีโอกาสได้เข้าร่วมงาน Git with Workshop one-day crash course โดย คุณ Tomz จาก Agoda ณ Stream I.T. Consulting Ltd. วันที่ 17 พ.ค. 2558 09.30 – 16.00

หัวข้อ คอร์สเทรนของวันนี้

Git with Workshop one-day crash course
1) Introduction to Git
2) Tools
Client side ( Git bash (command line), SourceTree,TortoiseGit)
Server side ( Gitlab)
Free 3 ways merge Tools
3) Install and Configure Git for Windows

== Local ==
4) Create local and shared Git repos
Add, Remove & Commit Files to repos
5) Working with History
6) Code sharing Model
7) Branching, Tag, Merging, Rebase
8) Handling Conflicts (drama)
9) reset, Chery-pick

= Remote =
– Clone
– Push, Pull, Fetch, Diff
– Branch Remote Repos

โดย คอร์สเทรน จะแบ่งเป็น 2 ช่วง เช้า-บ่าย

คอร์สช่วงเช้า

คุณTomz (วิทยากรที่ให้ความรู้เรื่อง GIT ในครั้งนี้) พูดถึง Introduction to Git (ส่วนนี้ไปหาอ่านเพิ่มเติมได้นะครับ) ต่อด้วยเรื่อง Tools ที่ใช้ประกอบด้วย

Tools ที่ใช้พัฒนาทางฝั่ง client

  • Git bash (command line) (พื้นฐานจพเป็นของติดตั้ง)
  • SourceTree (เครื่องมือ GUI สำหรับใช้งานการทำงานของ GIT เครื่องมือนี้ง่ายดีครับผมแนะนำ)
  • TortoiseGit (เครื่องมืออีกตัวที่ใช้งาน คู่กับ GIT ได้แต่ไม่ได้พูดถึง เพราะขึ้นกับเวลา เน้นไปทางการใช้งานผ่าน command promt จะทำให้จำได้ดีกว่า)

Tools ที่ใช้ทางฝั่ง Server side

  • Gitlab (ทำหน้าที่คล้ายกับ github ไปลองเล่นใช้งานได้จาก https://github.com/ มีเวอชั่นฟรีใช้งานได้)

แนะนำการติดตั้งและตั้งค่า Git ให้ใช้งานได้ สำหรับ windown และ linux

และเมื่อวิทยากรพร้อม เครื่องมือพร้อม เรามาลุยกันเลย

เริ่มแรกให้สร้าง Directory เก็บก่อนโดยหลัก ๆ คุณ Tomz จะเน้นไปทาง command promt คือพิมพ์คำสั่งโดยไม่ผ่าน GUI

  • สร้าง directory เก็บ => "mkdir hello"
  • เข้าไปใน directory  => "cd hello"
  • สร้าง repository  => "git init"
  • สร้างไฟล์ เพื่อใช้ทดสอบ => "cat > hello.txt"
  • นำไฟล์ทดสอบเข้า repository  => "git add hello.txt" (ขั้นตอนนี้เหมือนการนำไฟล์มาพักรอการ push)
  • นำไฟล์ขึ่น server พร้อมแนบคอมเม้น เพื่อการติดตาม => "git commit -m "create new file for test""

git_process

เราก็จะได้ code ที่ไปเก็บไว้ใน repository ของ git เรียบร้อย นอกคำสั่งพื้นฐานเหล่านี้ยังมีคำสั่ง พิเศษเพื่อช่วยในการใช้งาน GIT ให้ดียิ่งขึ้น

  • "git status" (เพื่อดูสถานะ ปัจจุบันของการทำงาน GIT)
  • "git log" (ดูประวัติการทำงาน) หรือ "git log --oneline --abbrev-commit --all --graph --decorate" ก็ได้
  • ฯลฯ มีอีกเยอะครับคำสั่งผมก็เพิ่งเริ่มใช้งานเอาไปเท่านี้ก่อน อยากรู้เพิ่มเติมตามไปดูที่ http://git-scm.com/doc ได้

คอร์สช่วงบ่าย

การนำ clone repository จาก server มาที่เครื่อง (ในที่นี้จะขอใช้ github ครับเป็นที่เก็บ code ส่วนกลาง)

  • ไปสร้าง repository ก่อน (ต้องทำการสมัครสมาชิกก่อน ท่านที่ยังไม่มี account จึงจะสามารถใช้งานได้)

github_create_repo

  • เมื่อสร้างเสร็จ

github_create_detail

  • คำสั่งจะแยกออกเป็น 2 แบบ

–  แบบที่ต้องสร้าง new repository ใหม่ code เรายังไม่ได้สร้าง (ยังไม่ได้ใช้คำสั่ง git init)

 echo # git-workshop-1 >> README.md
 git init
 git add README.md
 git commit -m "first commit"
 git remote add origin https://github.com/pool13433/git-workshop-1.git
 git push -u origin master

–  แบบที่ repository แล้ว

git remote add origin https://github.com/pool13433/git-workshop-1.git
git push -u origin master

เหล่านี้คือส่วนหนึ่งที่ผมได้จากงานนี้ แต่ยังมีอีกเยอะมาก(ผมจดไม่ทัน ความจำผมก็ไม่ค่อยดี 😥 ) การเข้าคอร์สเทรนครั้งนี้ทำให้รู้ความแตกต่างระหว่างการควบคุมเวอร์ชั่นของโค๊ดแบบ เก่า ๆ ผมเคยใช้แต่ svn แต่พอได้เรียน GIT วันนี้จะเริ่มให้ที่ทำงานมาใช้ GIT บ้างแล้ว