Remote, GitHub & push/pull
👋 อ่านฟรีทั้งหมดบน Aph's Blog — เนื้อหาภาษาไทย ทำตามทีละหน้าใน sidebar ได้เลย หากมีข้อเสนอแนะหรืออยากให้เพิ่มหัวข้อไหน บอกได้เสมอ
เก็บโค้ดบนเซิร์ฟเวอร์กลาง (เช่น GitHub) แล้ว push/pull เพื่อทำงานร่วมกับคนอื่น
จนถึงตอนนี้ git อยู่บนเครื่องเราคนเดียว remote คือสำเนา repo บนเซิร์ฟเวอร์กลาง (เช่น GitHub) ที่ทีมใช้ร่วมกัน — push ส่งงานขึ้นไป, pull ดึงงานคนอื่นลงมา
เชื่อม repo กับ remote
bash
# เชื่อม repo เครื่องเรากับ remote ชื่อ origin
git remote add origin https://github.com/user/repo.git
git remote -v # ดู remote ที่เชื่อมไว้
# push ครั้งแรก (ตั้ง upstream ด้วย -u)
git push -u origin main
# ครั้งต่อไป push สั้น ๆ
git pushclone, push, pull, fetch
| คำสั่ง | ทำอะไร |
|---|---|
| git clone <url> | ก็อป repo จาก remote มาทั้งหมด |
| git push | ส่ง commit ของเราขึ้น remote |
| git pull | ดึงงานใหม่จาก remote + รวมเข้าของเรา |
| git fetch | ดึงงานใหม่มาดูก่อน (ยังไม่รวม) |
bash
git clone https://github.com/user/repo.git # ก็อปมาเริ่มงาน
git pull # ดึงงานล่าสุดก่อนเริ่มทำ
# ...ทำงาน, commit...
git push # ส่งขึ้นไปpull = fetch + merge
git pull จริง ๆ คือทำ 2 อย่างต่อกัน: fetch (ดึง commit ใหม่จาก remote) แล้ว merge (รวมเข้า branch เรา) ถ้าอยากดูก่อนว่ามีอะไรเปลี่ยนค่อยรวม ให้ fetch แล้วดูก่อน
การยืนยันตัวตน (Auth)
GitHub ไม่ให้ใช้รหัสผ่านธรรมดาแล้ว ต้องใช้ Personal Access Token (PAT) แทนรหัสผ่านตอน push ผ่าน HTTPS หรือใช้ SSH key — ตั้งครั้งเดียวแล้วใช้ได้ตลอด
สรุปหัวข้อนี้
- remote = repo บนเซิร์ฟเวอร์กลาง (เช่น GitHub) ชื่อปริยาย origin
- git clone ก็อปมาเริ่ม, git push ส่งขึ้น, git pull ดึงลง
- pull = fetch + merge; fetch ดึงมาดูก่อนไม่รวม
- GitHub ใช้ Personal Access Token หรือ SSH key แทนรหัสผ่าน
แบบฝึกหัด
1) สร้าง repo บน GitHub แล้วเชื่อมกับโปรเจกต์เครื่องเรา push ขึ้นไป 2) clone repo ลงมาอีกโฟลเดอร์ 3) แก้ใน clone แล้ว push กลับ พร้อม pull ในโฟลเดอร์เดิม 4) อธิบายความต่างของ fetch กับ pull