Skip to content

Instantly share code, notes, and snippets.

@offchan42
Last active September 5, 2023 19:15
Show Gist options
  • Save offchan42/0a468eb0ab7277566f5b11303f14cebc to your computer and use it in GitHub Desktop.
Save offchan42/0a468eb0ab7277566f5b11303f14cebc to your computer and use it in GitHub Desktop.
Git & GitHub course outline draft

What will I learn ?

  • การติดตั้ง Git
  • การใช้งาน Git เบื้องต้น เพื่อการจัดการเวอร์ชันโปรแกรมของเรา
  • การใช้เว็บไซต์ GitHub
  • การอัพโหลดโปรเจ็ค Git ขึ้นสู่ GitHub เพื่อใช้งานร่วมกับคนอื่น
  • การใช้คำสั่งมีประโยชน์ต่างๆ เช่น git blame, git bisect, ...

Requirements

  • มีความคุ้นเคยกับโค้ดโปรแกรม (ไม่จำเป็นต้องเขียนเป็น)
  • มีความกระตือรือร้นที่จะฝึกฝนทักษะ, ถาม, และค้นหา

Descriptions

การใช้ระบบ version control ให้เป็น เป็นสิ่งสำคัญมากสำหรับเหล่านักพัฒนาอย่างเรา มันจะช่วยให้การทำโปรเจ็คใหญ่ๆ หรือโปรเจ็คที่ใช้เวลานาน (แค่ใช้เวลา 1 อาทิตย์ก็ถือว่านานแล้ว) สำเร็จได้ง่ายขึ้น

โดยเฉพาะโปรเจ็คที่มีคนยุ่งเกี่ยวมากกว่าหนึ่งคนยิ่งจำเป็นต้องใช้ version control อย่างมาก

ในคอร์สนี้จะสอนตั้งแต่การติดตั้ง Git จนถึงการใช้งานกับโปรเจ็คตัวอย่างจริงๆ สอนให้รู้ถึงเหตุผลว่าทำไมถึงต้องใช้ version control

git คือระบบ version control ที่นิยมที่สุดในปัจจุบัน เป็นโปรเจ็ค open source ที่ถูกริเริ่มโดย Linus Torvalds (ผู้สร้าง Linux OS) มีโค้ดมากมายที่ใช้ git ในการจัดการเวอร์ชัน ถ้าคุณเป็นนักพัฒนา มันเป็นสิ่งที่หลีกเลี่ยงไม่ได้เลยว่าคุณจะต้องใช้งาน Git และ GitHub ให้เป็น

Who is the target of this course?

  • ผู้ที่อยากเรียนรู้วิธีใช้ Git และ GitHub แบบใช้งานได้จริง (hands-on)
  • ผู้ที่มีปัญหาเขียนโปรแกรมติดบัค แต่ไม่รู้ว่าบรรทัดไหน
  • ผู้ที่อยากจะเผยแพร่ผลงานตัวเองให้ขึ้นไปอยู่บน GitHub (ไม่จำเป็นว่าต้องเป็นโค้ดโปรแกรม)
  • ผู้ที่เขียน text หรือ code เป็นประจำ และอยากจัดการสิ่งเหล่านี้ให้เป็นระเบียบ
  • ผู้ที่อยากจะทำงานเขียนโค้ดร่วมกับคนอื่นอย่างมีระบบ
  • ผู้ที่อยากนำโปรเจ็ค open source ที่อยู่บน GitHub ของคนอื่นมาใช้ แต่ทำไม่เป็น
  • ผู้ที่อยากช่วย contribute โค้ดสู่โปรเจ็ค open source บน GitHub
  • ผู้ที่เริ่มตระหนักว่า Dropbox หรือ Google Drive นั้นไม่เหมาะกับการ backup code เท่ากับ GitHub หรือ BitBucket

Curriculum

Section 1 : ทำความคุ้นเคยกับระบบ version control

  1. version control คืออะไร?
  2. รู้จักหาความแตกต่างของไฟล์ text ด้วยคำสั่ง diff และ fc
  3. เยี่ยมชมโปรเจ็ค (repository) คนอื่นบนเว็บไซต์ GitHub
  4. การติดตั้ง Git
  5. ดาวน์โหลดโปรเจ็คคนอื่นจาก GitHub ด้วย git clone
  6. การใช้คำสั่ง git log เพื่อดูประวัติ commit
  7. การใช้คำสั่ง git diff เพื่อดูความแตกต่างโค้ด
  8. การใช้คำสั่ง git checkout เพื่อย้อนดูโค้ดในอดีต

Section 2 : การใช้ Git เพื่อจัดการเวอร์ชัน

  1. git repository หน้าตาเป็นอย่างไร?
  2. การสร้าง repository ด้วย git init
  3. การตรวจสอบสถานะ working directory ด้วย git status
  4. การเพิ่มไฟล์เข้าสู่ staging area ด้วยคำสั่ง git add
  5. การใช้คำสั่ง git commit และข้อแนะนำการเขียนข้อความ
  6. การใช้คำสั่ง git diff แบบขั้นสูง
  7. แนวคิดการแตกสาย commit ด้วย Branch
  8. วิธีสร้าง Branch ด้วยคำสั่ง git branch
  9. แนวคิดการเข้าถึงได้ของ commit (Reachability)
  10. แนวคิดของการรวมไฟล์ (Merging concepts)
  11. การ merge ด้วยคำสั่ง git merge
  12. ปัญหาที่เกิดขึ้นได้จากการ merge (merge conflict)
  13. การแก้ปัญหา merge conflict

Section 3 : การใช้ GitHub เพื่อเผยแพร่ผลงาน และทำงานร่วมกับคนอื่น

  1. สมัครสมาชิก GitHub
  2. แนวคิดของการอัพโหลด repository สู่ GitHub
  3. การใช้คำสั่ง git remote
  4. การใช้คำสั่ง git push เพื่ออัพโหลด repository
  5. การแก้ไขไฟล์บน GitHub โดยตรง
  6. การใช้คำสั่ง git pull
  7. การ fork repository บน GitHub แล้ว clone ลงเครื่องตัวเอง
  8. branch ประหลาดชื่อ origin/master มาจากไหน
  9. การ push หรือ pull เมื่อ commit บน GitHub และบนเครื่องนั้นขัดกัน (มี conflict)
  10. การใช้คำสั่ง git fetch
  11. การอ่าน git status สำหรับ remote (ahead, behind, up-to-date, diverged)
  12. fast-forward merge
  13. การทำ Pull Request
  14. การอัพเดท Pull Request
  15. ทำอย่างไรเมื่อ Pull Request มีการเกิด conflict
  16. วิธีอัพเดท fork ของเราให้ up-to-date กับ upstream

Section 4 : ข้อแนะนำ Git อื่นๆที่มีประโยชน์

  1. git blame
  2. git bisect
  3. git cherry-pick
  4. git rebase
  5. การตั้งค่า alias ให้กับคำสั่งต่างๆ
@waraumbach
Copy link

มีไฟล์วิดิโอ หรือรับสอนไหมคะ

@offchan42
Copy link
Author

มีไฟล์วิดิโอ หรือรับสอนไหมคะ

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

แต่ปัจจุบันน่าจะมีคนทำสอนแล้วครับ ลองหาดูได้

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment