ผลต่างระหว่างรุ่นของ "01204223/github-pr"
Jittat (คุย | มีส่วนร่วม) |
Jittat (คุย | มีส่วนร่วม) (→fork) |
||
| แถว 27: | แถว 27: | ||
== fork == | == fork == | ||
| + | |||
| + | Repository หลักที่เราจะทดลองกันจะอยู่ที่ [https://github.com/jittat/01204223-git-practice-68 https://github.com/jittat/01204223-git-practice-68] | ||
| + | |||
| + | ในการทำงานกับ repository กลางที่เราไม่ได้เป็นเจ้าของนั้น เราจะสร้าง copy ของเราขึ้นมาก่อน บน github โดยขั้นตอนนี้เรียกว่าการ '''fork''' | ||
| + | |||
| + | ให้กดปุ่ม fork (ปุ่มด้านขวาบน ถัดจากชื่อ repo) จากนั้น github จะสร้าง repository ใน user ของเราขึ้นมา (เช่นอาจจะชื่อ userxyz / 01204223-git-practice-68) | ||
| + | |||
| + | เราจะมีสิทธิ์ในการจัดการ reposition ที่ fork มานี้อย่างเด็มที่ เพราะว่าเป็นของเราเอง เมื่อเราแก้และต้องการจะส่ง changes กลับไป repository ต้นทาง เราจะทำโดยการส่ง pull request (PR) ซึ่งจะได้ทดลองต่อไป | ||
== clone == | == clone == | ||
รุ่นแก้ไขเมื่อ 02:46, 19 ธันวาคม 2568
- เป็นส่วนหนึ่งของวิชา 01204223
สำหรับคนที่เรียนในคาบ ให้รอทำกิจกรรมนี้พร้อม ๆ กัน ผู้สอนจะประกาศเพิ่มเติมในคาบ
เนื้อหา
รายละเอียดกระบวนการคร่าวๆ
ทบทวนแนวคิดพื้นฐานก่อน
- merge เวลาที่เรามี history สองสาย (สอง head) แล้วต้องการนำมารวมเรา เราจะ merge, ในกระบวนการ merge อาจเกิด conflict ขึ้นได้ ซึ่งเราต้อง resolve ก่อน ถึงจะจัดเก็บได้ (commit)
- git เป็น distributed version control แต่ละ repository จะเป็นหน่วยย่อยที่สมบูรณ์ในตัวเอง การจะแลกเปลี่ยน history กันจะดำเนินโดยการส่ง changes ไปมา มีขั้นตอนสองขั้นตอนหลัก ๆ เรียกว่า pull (นำการเปลี่ยนแปลงมา) กับ push (ส่งการเปลี่ยนแปลงไปให้)
- หมายเหตุ: ขั้นตอนย่อยของ pull คือการ fetch แล้วตามด้วย merge หลายคนไม่ชอบใช้ pull
- ของใน git โดยมากจะไม่มีทางหาย ถ้าทำพลาดไป โดยมากจะสามารถกู้ทุกอย่างกลับมาได้ ยกเว้นถ้ามีการสั่ง --force ดังนั้น อย่า force ถ้าไม่จำเป็น
กิจกรรมที่เราจะทำเป็นดังนี้
- เราจะ fork repository กลางของแลบมาเป็น repository ของตนเอง
- จากนั้นจะ clone repository ของเราเอง มาที่เครื่อง local
- รอบที่ 1:
- ผมจะแก้ไฟล์ที่ repository กลาง และให้แต่ละคน sync (pull) มาที่ repository ของตนเองใน github
- เราจะ pull changes มาที่ local
- จะเพิ่มไฟล์ และ push กลับไปที่ github ของแต่ละคน
- แล้วจะให้แต่ละคนทำ pull request (PR) จาก repo github กลับมาที่ repository กลาง (รอบนี้จะ accept PR ได้แบบไม่มี conflict)
- รอบที่ 2:
- pull changes ทั้งหมดมาที่ local
- ให้แก้ไฟล์ของแต่ละกลุ่ม
- push กลับไป repo ตนเอง
- ทำ pull request (PR) อีกรอบ และแก้ conflict (หัวแตก)
fork
Repository หลักที่เราจะทดลองกันจะอยู่ที่ https://github.com/jittat/01204223-git-practice-68
ในการทำงานกับ repository กลางที่เราไม่ได้เป็นเจ้าของนั้น เราจะสร้าง copy ของเราขึ้นมาก่อน บน github โดยขั้นตอนนี้เรียกว่าการ fork
ให้กดปุ่ม fork (ปุ่มด้านขวาบน ถัดจากชื่อ repo) จากนั้น github จะสร้าง repository ใน user ของเราขึ้นมา (เช่นอาจจะชื่อ userxyz / 01204223-git-practice-68)
เราจะมีสิทธิ์ในการจัดการ reposition ที่ fork มานี้อย่างเด็มที่ เพราะว่าเป็นของเราเอง เมื่อเราแก้และต้องการจะส่ง changes กลับไป repository ต้นทาง เราจะทำโดยการส่ง pull request (PR) ซึ่งจะได้ทดลองต่อไป
clone
pull / push
Personal Access Token (PAT)
เพื่อความปลอดภัย github จะไม่ยอมให้เราดำเนินการ git ต่าง ๆ ด้วยรหัสผ่าน เราต้องไปสร้าง token เพื่อใช้แทน password โดยดำเนินการดังนี้
- เข้าสู่ระบบ GitHub แล้วคลิกที่รูปโปรไฟล์มุมขวาบน
- เลือก Settings
- เลื่อนลงไปด้านล่างสุดของเมนูซ้าย เลือก Developer settings
- เลือก Personal access tokens > Tokens (classic) หรือ Fine-grained tokens
- คลิก Generate new token (เลือก classic)
- ตั้งชื่อ token และเลือกระยะเวลาหมดอายุ
- เลือก scopes หรือสิทธิ์ที่ต้องการ ในที่นี้ให้เลือก repo
- คลิก Generate token ด้านล่าง
- คัดลอก token ทันที - จะไม่สามารถดูอีกครั้งได้
หมายเหตุ
- เก็บ token ไว้ในที่ปลอดภัย
- Fine-grained tokens ให้การควบคุมสิทธิ์ที่ละเอียดกว่า
- Classic tokens ใช้งานง่ายกว่าแต่ให้สิทธิ์กว้างกว่า