# Introduction to GitHub สวัสดี นักพัฒนามือใหม่ในอนาคต! 👋 พร้อมที่จะเข้าร่วมกับนักเขียนโค้ดนับล้านทั่วโลกแล้วหรือยัง? ฉันตื่นเต้นอย่างจริงใจที่จะพาคุณไปรู้จักกับ GitHub – คิดว่าเป็นแพลตฟอร์มโซเชียลมีเดียสำหรับโปรแกรมเมอร์ ต่างจากการแชร์รูปอาหารเท่านั้นที่นี่เราแชร์โค้ดและสร้างสิ่งที่น่าทึ่งร่วมกัน! นี่คือสิ่งที่ทำให้ฉันตะลึงมาก: แอปทุกตัวในโทรศัพท์ของคุณ เว็บไซต์ทุกแหล่งที่คุณเยี่ยมชม และเครื่องมือส่วนใหญ่ที่คุณจะได้เรียนรู้ถูกสร้างโดยทีมพัฒนาซอฟต์แวร์ที่ทำงานร่วมกันบนแพลตฟอร์มอย่าง GitHub แอปเพลงที่คุณชื่นชอบ? มีคนอย่างคุณที่ช่วยสร้างมัน เกมที่คุณติดงอมแงม? ใช่แล้ว นั่นก็น่าจะถูกสร้างด้วยความร่วมมือผ่าน GitHub และตอนนี้คุณก็จะได้เรียนรู้วิธีเป็นส่วนหนึ่งของชุมชนน่าอัศจรรย์นี้! ฉันรู้ว่าสิ่งนี้อาจดูมากในตอนแรก – โอ้ ฉันยังจำได้ตอนที่จ้องหน้าเว็บ GitHub แรกของฉันแล้วคิดว่า “นี่มันหมายความว่าอะไร?” แต่สิ่งที่ควรรู้คือ ผู้พัฒนาทุกคนเริ่มต้นที่จุดเดียวกับที่คุณอยู่ตอนนี้ เมื่อจบบทเรียนนี้ คุณจะมีเก็บข้อมูล GitHub ของตัวเอง (คิดว่ามันเป็นเหมือนโชว์เคสโปรเจกต์ส่วนตัวของคุณบนคลาวด์) และคุณจะรู้วิธีการบันทึกงาน แชร์กับคนอื่น และแม้แต่มีส่วนร่วมในโปรเจกต์ที่ผู้คนนับล้านใช้งาน เราจะเดินทางร่วมกันทีละก้าว ไม่มีเร่ง ไม่มีแรงกดดัน – แค่คุณ ฉัน และเครื่องมือเจ๋ง ๆ ที่กำลังจะเป็นเพื่อนใหม่ของคุณ! ![Intro to GitHub](../../../../translated_images/webdev101-github.8846d7971abef6f9.th.png) > Sketchnote by [Tomomi Imura](https://twitter.com/girlie_mac) ```mermaid journey title การผจญภัย GitHub ของคุณวันนี้ section การตั้งค่า ติดตั้ง Git: 4: You สร้างบัญชี: 5: You ที่เก็บแรก: 5: You section เรียนรู้ Git การเปลี่ยนแปลงในเครื่อง: 4: You การคอมมิตและการพุช: 5: You การสร้างสาขา: 4: You section การร่วมมือ การโฟรกโปรเจกต์: 4: You การร้องขอการดึง: 5: You โอเพ่นซอร์ส: 5: You ``` ## Pre-Lecture Quiz [Pre-lecture quiz](https://ff-quizzes.netlify.app) ## Introduction ก่อนที่เราจะเข้าสู่สิ่งที่น่าตื่นเต้นจริงๆ มาจัดเตรียมคอมพิวเตอร์ของคุณสำหรับเวทมนตร์ GitHub กัน! คิดว่านี่เหมือนกับการจัดเตรียมอุปกรณ์ศิลปะก่อนสร้างผลงานชิ้นเอก – มีเครื่องมือที่เหมาะสมพร้อมทำให้ทุกอย่างราบรื่นและสนุกขึ้นมาก ฉันจะพาคุณผ่านทุกขั้นตอนการติดตั้งด้วยตนเอง และสัญญาว่าไม่ได้น่ากลัวอย่างที่ดูในตอนแรก หากบางอย่างยังไม่เข้าใจทันที นั่นเป็นเรื่องปกติมาก! ฉันเคยตั้งค่าสภาพแวดล้อมพัฒนาเป็นครั้งแรกและรู้สึกเหมือนพยายามอ่านอักษรรูปภาพโบราณ ทุกผู้พัฒนาต่างก็เคยอยู่จุดที่คุณกำลังยืนสงสัยว่าทำถูกไหม แอบกระซิบว่า ถ้าคุณกำลังเรียนอยู่แบบนี้ แสดงว่าคุณทำได้ถูกต้องแล้ว! 🌟 ในบทเรียนนี้เราจะพูดถึง: - การติดตามงานที่คุณทำบนเครื่องคุณ - การทำงานร่วมกันในโปรเจกต์กับคนอื่น - วิธีการมีส่วนร่วมในซอฟต์แวร์โอเพนซอร์ส ### Prerequisites มาจัดเตรียมคอมพิวเตอร์ของคุณสำหรับเวทมนตร์ GitHub กัน! ไม่ต้องกังวล – การติดตั้งนี้ทำแค่ครั้งเดียว จากนั้นคุณจะพร้อมสำหรับการเดินทางในการเขียนโค้ดของคุณตลอดไป เอาล่ะ เรามาเริ่มจากฐานราก! อันดับแรกเราต้องตรวจสอบว่ามี Git อยู่ในเครื่องของคุณแล้วหรือยัง Git คือเหมือนผู้ช่วยอัจฉริยะที่จำการเปลี่ยนแปลงทุกอย่างที่คุณทำกับโค้ดได้ – ดีกว่าการกด Ctrl+S รัวๆ ทุกสองวินาที (เราทุกคนเคยเป็นแบบนั้น!) ลองดูว่า Git ติดตั้งแล้วหรือยัง โดยพิมพ์คำสั่งเวทมนตร์นี้ในเทอร์มินัลของคุณ: `git --version` ถ้ายังไม่มี Git ไม่ต้องกลัว! แค่ไปที่ [download Git](https://git-scm.com/downloads) แล้วดาวน์โหลด เมื่อคุณติดตั้งเสร็จ เราต้องแนะนำตัว Git ให้รู้จักคุณอย่างถูกต้อง: > 💡 **ตั้งค่าครั้งแรก**: คำสั่งเหล่านี้จะบอก Git ว่าคุณเป็นใคร ข้อมูลนี้จะถูกแนบกับทุกคอมมิตที่คุณทำ ดังนั้นเลือกชื่อและอีเมลที่คุณมั่นใจว่าอยากแชร์สู่สาธารณะ ```bash git config --global user.name "your-name" git config --global user.email "your-email" ``` ถ้าต้องการเช็คว่า Git ถูกตั้งค่าแล้วหรือไม่ให้พิมพ์: ```bash git config --list ``` นอกจากนี้คุณยังต้องมีบัญชี GitHub, ตัวแก้ไขโค้ด (เช่น Visual Studio Code) และเปิดเทอร์มินัล (หรือ: command prompt) ไปที่ [github.com](https://github.com/) แล้วสร้างบัญชีใหม่ถ้ายังไม่มี หรือเข้าสู่ระบบและกรอกข้อมูลโปรไฟล์ของคุณ 💡 **เคล็ดลับสมัยใหม่**: ลองตั้งค่า [SSH keys](https://docs.github.com/en/authentication/connecting-to-github-with-ssh) หรือใช้ [GitHub CLI](https://cli.github.com/) สำหรับการตรวจสอบสิทธิ์ที่ง่ายขึ้นโดยไม่ต้องใช้รหัสผ่าน ✅ GitHub ไม่ใช่ที่เก็บโค้ดเดียวในโลก ยังมีที่อื่น แต่ GitHub เป็นที่รู้จักดีที่สุด ### Preparation คุณจะต้องมีโฟลเดอร์ที่มีโปรเจกต์โค้ดบนเครื่องของคุณ (แล็ปท็อปหรือพีซี) และที่เก็บสาธารณะ (public repository) บน GitHub ซึ่งจะใช้เป็นตัวอย่างวิธีมีส่วนร่วมในโปรเจกต์ของคนอื่น ### Keeping Your Code Safe มาคุยเรื่องความปลอดภัยกันสักครู่ – ไม่ต้องกลัว เราจะไม่ทำให้คุณกลัว! คิดว่าการปฏิบัติด้านความปลอดภัยเช่นเดียวกับการล็อกรถหรือบ้านของคุณ เป็นนิสัยง่ายๆ ที่กลายเป็นธรรมชาติและช่วยปกป้องผลงานที่คุณตั้งใจทำ เราจะแสดงวิธีทำงานกับ GitHub แบบทันสมัยและปลอดภัยตั้งแต่เริ่มต้น เพื่อให้คุณพัฒนานิสัยที่ดีซึ่งจะช่วยคุณตลอดอาชีพเขียนโค้ด เมื่อทำงานกับ GitHub สิ่งสำคัญคือต้องทำตามแนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุด: | ด้านความปลอดภัย | แนวปฏิบัติที่ดีที่สุด | ทำไมถึงสำคัญ | |---------------|---------------|----------------| | **การตรวจสอบสิทธิ์** | ใช้ SSH keys หรือ Personal Access Tokens | รหัสผ่านปลอดภัยน้อยกว่าและกำลังถูกเลิกใช้ | | **การตรวจสอบสองปัจจัย** | เปิดใช้ 2FA บัญชี GitHub ของคุณ | เพิ่มชั้นป้องกันบัญชีอีกชั้น | | **ความปลอดภัยของที่เก็บข้อมูล** | หลีกเลี่ยงการคอมมิตข้อมูลสำคัญ | รหัส API และรหัสผ่านไม่ควรอยู่ในที่เก็บสาธารณะ | | **การจัดการการพึ่งพิง** | เปิดใช้ Dependabot สำหรับอัปเดต | ช่วยให้ dependencies ปลอดภัยและทันสมัย | > ⚠️ **คำเตือนความปลอดภัยที่สำคัญ**: หลีกเลี่ยงการคอมมิตกุญแจ API, รหัสผ่าน หรือข้อมูลลับอื่นๆ ลงในที่เก็บใด ๆ ใช้ตัวแปรสภาพแวดล้อม และไฟล์ `.gitignore` เพื่อปกป้องข้อมูลสำคัญ **การตั้งค่าการตรวจสอบสิทธิ์สมัยใหม่:** ```bash # สร้างกุญแจ SSH (อัลกอริทึม ed25519 รุ่นใหม่) ssh-keygen -t ed25519 -C "your_email@example.com" # ตั้งค่า Git ให้ใช้ SSH git remote set-url origin git@github.com:username/repository.git ``` > 💡 **เคล็ดลับมือโปร**: SSH keys ช่วยให้ไม่ต้องป้อนรหัสผ่านซ้ำ ๆ และปลอดภัยกว่าวิธีตรวจสอบสิทธิ์แบบเก่า --- ## Managing Your Code Like a Pro เอาล่ะ ที่นี่คือจุดที่น่าตื่นเต้นสุด ๆ! 🎉 เรากำลังจะเรียนรู้วิธีติดตามและจัดการโค้ดของคุณเหมือนมืออาชีพ และจริงๆ แล้วนี่เป็นหนึ่งในสิ่งที่ฉันชอบสอนที่สุดเพราะมันเปลี่ยนเกมได้เลย ลองจินตนาการว่า คุณกำลังเขียนเรื่องราวที่น่าทึ่ง และอยากเก็บทุกฉบับร่าง ทุกการแก้ไขเจ๋งๆ ทุกเหตุการณ์ “ว้าว นี่มันสุดยอด!” ตลอดทาง นั่นแหละคือสิ่งที่ Git ทำให้โค้ดของคุณ! มันเหมือนสมุดบันทึกเดินทางข้ามเวลาที่จำทุกอย่าง – ทุกการพิมพ์ ทุกการเปลี่ยนแปลง ทุก “โอ๊ะ ทำพังหมดเลย” ที่คุณสามารถย้อนกลับได้ทันที ขอบอกตามตรงว่า ในตอนแรกอาจรู้สึกสับสน พอเริ่มต้นฉันเคยคิดว่า “ทำไมฉันไม่แค่บันทึกไฟล์เหมือนปกติ?” แต่เชื่อฉันนะ เมื่อ Git คลิกในหัวคุณ (และมันจะคลิก!) คุณจะมีโมเมนต์ที่คิดว่า “ฉันเคยโค้ดโดยไม่มีสิ่งนี้ได้ยังไง?” มันเหมือนค้นพบว่าคุณบินได้ ทั้งที่เดินเท้ามาทั้งชีวิต! สมมติว่าคุณมีโฟลเดอร์โค้ดบนเครื่อง และอยากเริ่มติดตามความก้าวหน้าด้วย git – ระบบควบคุมเวอร์ชัน บางคนเปรียบเหมือนเขียนจดหมายรักถึงตัวเองในอนาคต การอ่านข้อความคอมมิตวันหลังจะช่วยให้คุณจำได้ว่าทำไมตัดสินใจอย่างนั้น หรือ “ย้อนกลับ” การเปลี่ยนแปลงได้ – เมื่อคุณเขียนข้อความคอมมิตดีๆ ```mermaid flowchart TD A[📁 ไฟล์โครงการของคุณ] --> B{นี่คือ Git Repository หรือไม่?} B -->|ไม่| C[git init] B -->|ใช่| D[ทำการเปลี่ยนแปลง] C --> D D --> E[git add .] E --> F["git commit -m 'ข้อความ'"] F --> G[git push] G --> H[🌟 โค้ดบน GitHub!] H --> I{ต้องการร่วมมือหรือไม่?} I -->|ใช่| J[Fork & Clone] I -->|ไม่| D J --> K[สร้างสาขา] K --> L[ทำการเปลี่ยนแปลง] L --> M[Pull Request] M --> N[🎉 กำลังร่วมมือ!] style A fill:#fff59d style H fill:#c8e6c9 style N fill:#ff4081,color:#fff ``` ### Task: สร้าง Repository แรกของคุณ! > 🎯 **ภารกิจของคุณ (และฉันตื่นเต้นมาก!)**: เราจะสร้าง repository แรกบน GitHub ของคุณด้วยกัน! เมื่อเราทำเสร็จ คุณจะมีมุมเล็กๆ บนอินเทอร์เน็ตเพื่อเก็บโค้ดของคุณ และได้ทำ “commit” แรก (ซึ่งแปลว่าการบันทึกงานอย่างฉลาด) > > นี่เป็นช่วงเวลาสุดพิเศษ – คุณกำลังจะเข้าร่วมชุมชนนักพัฒนาทั่วโลกอย่างเป็นทางการ! ฉันยังจำความรู้สึกตื่นเต้นตอนสร้าง repo แรกได้ว่า “ว้าว ฉันทำได้จริงๆ!” เราจะเดินผ่านการผจญภัยครั้งนี้ไปด้วยกันทีละขั้นตอน ใช้เวลาแต่ละส่วนอย่างเต็มที่ – ไม่มีการแข่งขัน และฉันสัญญาทุกขั้นตอนจะเข้าใจง่าย จำไว้ว่านักพัฒนาที่คุณชื่นชอบก็เคยนั่งตรงนี้ เตรียมสร้าง repository แรกของเขา มันเจ๋งมากใช่ไหม? > ดูวิดีโอ > > [![Git and GitHub basics video](https://img.youtube.com/vi/9R31OUPpxU4/0.jpg)](https://www.youtube.com/watch?v=9R31OUPpxU4) **มาทำสิ่งนี้ด้วยกัน:** 1. **สร้าง repository ของคุณบน GitHub** ไปที่ GitHub.com แล้วหาปุ่มสีเขียวสดใส **New** (หรือเครื่องหมาย **+** ที่มุมบนขวา) คลิกเลือก **New repository** ต่อไปนี้คือสิ่งที่ต้องทำ: 1. ตั้งชื่อ repository ให้มีความหมายสำหรับคุณ! 1. เพิ่มคำอธิบายถ้าต้องการ (ช่วยให้คนอื่นเข้าใจว่าโปรเจกต์ของคุณคืออะไร) 1. เลือกว่าจะให้เป็นสาธารณะ (ทุกคนเห็นได้) หรือส่วนตัว (เฉพาะคุณ) 1. ฉันแนะนำให้ติ๊กเลือกกล่องเพื่อเพิ่มไฟล์ README – เหมือนหน้าปกโปรเจกต์ของคุณ 1. คลิก **Create repository** และฉลองได้เลย – คุณเพิ่งสร้าง repo แรกสำเร็จ! 🎉 2. **ไปที่โฟลเดอร์โปรเจกต์ของคุณ** ตอนนี้มาเปิดเทอร์มินัล (ไม่ต้องกลัว มันไม่น่ากลัวอย่างที่คิด!) เราต้องบอกคอมพิวเตอร์ว่าตำแหน่งของไฟล์โปรเจกต์อยู่ที่ไหน พิมพ์คำสั่งนี้: ```bash cd [name of your folder] ``` **สิ่งที่เราทำตรงนี้:** - พูดกับคอมพิวเตอร์ว่า “พาไปที่โฟลเดอร์โปรเจกต์ของฉัน” - เหมือนเปิดโฟลเดอร์บนเดสก์ท็อป แต่ใช้คำสั่งข้อความแทน - แทนที่ `[name of your folder]` ด้วยชื่อโฟลเดอร์โปรเจกต์จริงของคุณ 3. **เปลี่ยนโฟลเดอร์ของคุณให้เป็น Git repository** นี่คือจุดเกิดเวทมนตร์! พิมพ์: ```bash git init ``` **นี่คือสิ่งที่เพิ่งเกิดขึ้น (เจ๋งมาก):** - Git สร้างโฟลเดอร์ `.git` ที่ถูกซ่อนอยู่ในโปรเจกต์ของคุณ – คุณจะไม่เห็น แต่มีอยู่จริง! - โฟลเดอร์ปกติของคุณตอนนี้กลายเป็น “repository” ที่สามารถติดตามทุกการเปลี่ยนแปลงได้ - คิดว่ามันเหมือนให้พลังวิเศษกับโฟลเดอร์ของคุณที่จะจำได้ทุกอย่าง 4. **ตรวจสอบสถานะโปรเจกต์** มาดูว่า Git กำลังบอกอะไรเกี่ยวกับโปรเจกต์ของคุณตอนนี้: ```bash git status ``` **ทำความเข้าใจสิ่งที่ Git บอก:** คุณอาจเห็นอะไรที่คล้ายแบบนี้: ```output Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: file.txt modified: file2.txt ``` **ไม่ต้องตกใจ! นี่คือความหมายของมัน:** - ไฟล์ที่เป็น **สีแดง** คือไฟล์ที่มีการเปลี่ยนแปลงแต่ยังไม่พร้อมบันทึก - ไฟล์ที่เป็น **สีเขียว** (เมื่อเห็น) คือไฟล์ที่พร้อมบันทึกแล้ว - Git กำลังช่วยบอกคุณว่า คุณสามารถทำอะไรต่อไปได้บ้าง > 💡 **เคล็ดลับมือโปร**: คำสั่ง `git status` เป็นเพื่อนที่ดีที่สุดของคุณ! ใช้มันเมื่อไหงสงสัยว่ากำลังเกิดอะไรขึ้น มันเหมือนถาม Git ว่า “เฮ้ สถานการณ์ตอนนี้เป็นไง?” 5. **เตรียมไฟล์ของคุณสำหรับการบันทึก** (เรียกว่า “staging”): ```bash git add . ``` **สิ่งที่เราทำไป:** - บอก Git ว่า “เอาไฟล์ทั้งหมดของฉันไปรวมในบันทึกถัดไป” - จุด ( `.` ) คือเรียกทุกอย่างในโฟลเดอร์นี้ - ตอนนี้ไฟล์ของคุณถูก “จัดเตรียม” และพร้อมสำหรับขั้นตอนต่อไป **อยากเลือกไฟล์เฉพาะเจาะจง?** คุณสามารถเพิ่มแค่ไฟล์บางไฟล์ได้: ```bash git add [file or folder name] ``` **ทำไมถึงอยากทำแบบนี้?** - บางครั้งอยากบันทึกการเปลี่ยนแปลงที่เกี่ยวข้องกันเท่านั้น - ช่วยจัดระเบียบงานเป็นส่วนๆ ได้ง่ายขึ้น - ทำให้เข้าใจได้ง่ายว่าอะไรเปลี่ยนเมื่อไหร่ **เปลี่ยนใจไหม?** ไม่เป็นไร! คุณสามารถยกเลิกการเตรียมไฟล์แบบนี้: ```bash # ยกเลิกการตั้งค่าสถานะทั้งหมด git reset # ยกเลิกการตั้งค่าสถานะไฟล์เดียวเท่านั้น git reset [file name] ``` ไม่ต้องกังวล – วิธีนี้ไม่ลบงานคุณนะ แค่เอาไฟล์ออกจากส่วนที่ “พร้อมเก็บ” 6. **บันทึกงานของคุณอย่างถาวร** (ทำ commit แรก!): ```bash git commit -m "first commit" ``` **🎉 ยินดีด้วย! คุณเพิ่งทำ commit แรก!** **นี่คือสิ่งที่เกิดขึ้น:** - Git ถ่าย “ภาพนิ่ง” ของไฟล์ทั้งหมดที่จัดเตรียมไว้ ณ จุดนี้ - ข้อความ commit “first commit” อธิบายว่า จุดเก็บนี้หมายถึงอะไร - Git ให้ ID เฉพาะกับภาพนิ่งนี้ เพื่อให้คุณหาได้เสมอภายหลัง - คุณเริ่มติดตามประวัติของโปรเจกต์อย่างเป็นทางการ! > 💡 **ข้อความ commit ในอนาคต**: สำหรับ commit ต่อๆ ไป ให้พยายามเขียนให้บรรยายชัดเจนกว่านี้ แทนที่จะเขียนว่า “updated stuff” ลองเป็น “Add contact form to homepage” หรือ “Fix navigation menu bug” ตัวคุณในอนาคตจะขอบคุณ! 7. **เชื่อมโปรเจกต์ในเครื่องกับ GitHub** ตอนนี้โปรเจกต์อยู่แค่บนคอมพิวเตอร์คุณเอง มาเชื่อมกับ repository บน GitHub เพื่อแชร์กับโลกกัน! ก่อนอื่น เข้าไปที่หน้า repository บน GitHub ของคุณแล้วคัดลอก URL จากนั้นกลับมาที่นี่และพิมพ์: ```bash git remote add origin https://github.com/username/repository_name.git ``` (แทนที่ URL นี้ด้วย URL จริงของ repository คุณ!) **สิ่งที่เราทำไป:** - เราได้สร้างการเชื่อมต่อระหว่างโปรเจคในเครื่องของคุณกับรีโพซิทอรี GitHub ของคุณแล้ว - "Origin" เป็นเพียงชื่อเล่นสำหรับรีโพซิทอรี GitHub ของคุณ—เหมือนกับการเพิ่มรายชื่อผู้ติดต่อในโทรศัพท์ของคุณ - ตอนนี้ Git ในเครื่องของคุณรู้แล้วว่าจะส่งโค้ดของคุณไปที่ไหนเมื่อคุณพร้อมจะแชร์ 💡 **วิธีที่ง่ายกว่า**: ถ้าคุณติดตั้ง GitHub CLI แล้ว คุณสามารถทำสิ่งนี้ได้ในคำสั่งเดียว: ```bash gh repo create my-repo --public --push --source=. ``` 8. **ส่งโค้ดของคุณไปที่ GitHub** (ช่วงเวลาสำคัญ!): ```bash git push -u origin main ``` **🚀 นี่แหละ! คุณกำลังอัปโหลดโค้ดของคุณไปยัง GitHub!** **สิ่งที่กำลังเกิดขึ้น:** - คอมมิตของคุณกำลังเคลื่อนที่จากคอมพิวเตอร์ของคุณไปยัง GitHub - ธง `-u` ตั้งค่าการเชื่อมต่อถาวร เพื่อให้การ push ในอนาคตง่ายขึ้น - "main" คือชื่อของสาขาหลักของคุณ (เหมือนกับโฟลเดอร์หลัก) - หลังจากนี้ คุณแค่พิมพ์ `git push` สำหรับการอัปโหลดในอนาคตได้เลย! 💡 **หมายเหตุด่วน**: ถ้าสาขาของคุณใช้ชื่ออื่น (เช่น "master") ให้ใช้ชื่อนั้นแทน คุณสามารถตรวจสอบได้ด้วย `git branch --show-current` 9. **จังหวะการเขียนโค้ดใหม่ของคุณในแต่ละวัน** (ตรงนี้สนุกมาก!): จากนี้ไป เมื่อใดก็ตามที่คุณทำการเปลี่ยนแปลงโปรเจค คุณก็มีการเต้นสามขั้นตอนง่ายๆ นี้: ```bash git add . git commit -m "describe what you changed" git push ``` **นี่คือจังหวะการเขียนโค้ดของคุณ:** - ทำการเปลี่ยนแปลงโค้ดสุดเจ๋งของคุณ ✨ - วางไว้ในสเตจด้วย `git add` ("เฮ้ Git จับตาดูการเปลี่ยนแปลงพวกนี้!") - บันทึกด้วย `git commit` พร้อมข้อความอธิบาย (คุณในอนาคตจะขอบคุณ!) - แชร์กับโลกโดยใช้ `git push` 🚀 - ทำซ้ำ – จริงจังนะ นี่จะกลายเป็นธรรมชาติอย่างกับการหายใจ! ฉันชอบโฟลว์นี้เพราะมันเหมือนกับมีจุดเซฟหลายจุดในวิดีโอเกม ทำการเปลี่ยนแปลงที่ชอบ? คอมมิตเลย! อยากลองอะไรเสี่ยงๆ? ไม่มีปัญหา – คุณสามารถย้อนกลับไปยังคอมมิตล่าสุดได้ถ้าเกิดสถานการณ์ผิดพลาด! > 💡 **เคล็ดลับ**: คุณอาจอยากใช้ไฟล์ `.gitignore` เพื่อป้องกันไม่ให้ไฟล์ที่คุณไม่อยากติดตามแสดงบน GitHub - เช่นไฟล์โน้ตที่เก็บไว้ในโฟลเดอร์เดียวกัน แต่ไม่ควรอยู่ในรีโพซิทอรีสาธารณะ คุณสามารถหาแม่แบบไฟล์ `.gitignore` ได้ที่ [.gitignore templates](https://github.com/github/gitignore) หรือสร้างโดยใช้ [gitignore.io](https://www.toptal.com/developers/gitignore) ### 🧠 **เช็คอินรีโพซิทอรีแรก: รู้สึกอย่างไรบ้าง?** **หยุดสักครู่เพื่อฉลองและสะท้อนความคิด:** - รู้สึกอย่างไรเมื่อเห็นโค้ดของคุณโผล่บน GitHub เป็นครั้งแรก? - ขั้นตอนไหนที่คุณรู้สึกสับสนที่สุด และขั้นตอนไหนที่คุณคิดว่าง่ายจริงๆ? - คุณสามารถอธิบายความแตกต่างระหว่าง `git add`, `git commit`, และ `git push` ด้วยคำพูดของคุณเองได้ไหม? ```mermaid stateDiagram-v2 [*] --> LocalFiles: สร้างโปรเจกต์ LocalFiles --> Staged: git add . Staged --> Committed: git commit Committed --> GitHub: git push GitHub --> [*]: สำเร็จ! 🎉 note right of Staged ไฟล์พร้อมสำหรับการบันทึก end note note right of Committed สแน็ปช็อตถูกสร้างแล้ว end note ``` > **จำไว้**: แม้แต่ผู้พัฒนาที่มีประสบการณ์ก็ยังลืมคำสั่งบางอย่างได้ การทำให้โฟลว์นี้กลายเป็นความเคยชินต้องการการฝึกฝน—คุณทำได้ดีมาก! #### โฟลว์การทำงาน Git แบบสมัยใหม่ ลองใช้แนวทางปฏิบัติเหล่านี้: - **Conventional Commits**: ใช้รูปแบบข้อความคอมมิตมาตรฐาน เช่น `feat:`, `fix:`, `docs:` เป็นต้น เรียนรู้เพิ่มเติมได้ที่ [conventionalcommits.org](https://www.conventionalcommits.org/) - **Atomic commits**: ให้แต่ละคอมมิตแทนการเปลี่ยนแปลงเชิงตรรกะเพียงอย่างเดียว - **Frequent commits**: คอมมิตบ่อยๆ พร้อมข้อความอธิบาย ไม่ใช่คอมมิตใหญ่ๆ ที่นานๆ ครั้ง #### ข้อความคอมมิต หัวข้อคอมมิตที่ดีควรเติมประโยคต่อไปนี้: ถ้าใช้คอมมิตนี้ จะทำให้ <หัวข้อของคุณที่นี่> สำหรับหัวข้อ ใช้คำสั่งเป็นรูปแบบกริยาในปัจจุบัน: "change" ไม่ใช่ "changed" หรือ "changes" เหมือนกับหัวข้อ ในเนื้อความ (ถ้ามี) ก็ใช้กริยาในรูปแบบปัจจุบันเช่นกัน บอดี้ควรรวมเหตุผลของการเปลี่ยนแปลงและเปรียบเทียบกับพฤติกรรมก่อนหน้า คุณกำลังอธิบายว่า `ทำไม` ไม่ใช่ `อย่างไร` ✅ ใช้เวลาสักพักท่อง GitHub ดู คุณเจอข้อความคอมมิตดีๆ บ้างไหม? เจอข้อความคอมมิตสั้นมากๆ บ้างไหม? คุณคิดว่าข้อมูลไหนสำคัญที่สุดและเป็นประโยชน์ที่สุดที่ควรใส่ในข้อความคอมมิต? ## การทำงานร่วมกับผู้อื่น (ส่วนที่สนุก!) เตรียมตัวให้พร้อมเพราะตรงนี้แหละที่ GitHub จะกลายเป็นเวทมนตร์อย่างแท้จริง! 🪄 คุณชำนาญการจัดการโค้ดของตัวเองแล้ว แต่ตอนนี้เราจะดำดิ่งไปยังส่วนที่ฉันชอบที่สุด—การร่วมมือกับคนเจ๋งๆ จากทั่วทุกมุมโลก ลองนึกภาพดูสิ: คุณตื่นขึ้นมาในวันพรุ่งนี้แล้วเห็นว่ามีใครบางคนในโตเกียวปรับปรุงโค้ดของคุณในขณะที่คุณนอนหลับ จากนั้นใครบางคนในเบอร์ลินแก้บั๊กที่คุณติดค้างไว้ ช่วงบ่าย นักพัฒนาในเซาเปาโลเพิ่มฟีเจอร์ที่คุณไม่เคยคิดถึง นั่นไม่ใช่เรื่องนิยายวิทยาศาสตร์—นั่นคือวันธรรมดาในจักรวาล GitHub! สิ่งที่ทำให้ฉันตื่นเต้นจริงๆ คือทักษะการร่วมมือนี้? นี่คือโฟลว์การทำงานเดียวกันกับที่ทีมงาน Google, Microsoft และสตาร์ทอัพที่คุณชื่นชอบใช้ทุกวัน คุณไม่ใช่แค่เรียนรู้เครื่องมือเท่ๆ แต่คุณกำลังเรียนรู้ภาษาลับที่ทำให้โลกซอฟต์แวร์ทั้งหมดทำงานร่วมกันได้ จริงจังนะ เมื่อคุณได้สัมผัสความตื่นเต้นจากการที่ใครบางคน merge pull request แรกของคุณ คุณจะเข้าใจว่าทำไมนักพัฒนาถึงหลงรักโอเพนซอร์สขนาดนั้น มันเหมือนกับการเป็นส่วนหนึ่งของโปรเจคทีมที่สร้างสรรค์ที่สุดในโลก! > ดูวิดีโอ > > [![Git and GitHub basics video](https://img.youtube.com/vi/bFCM-PC3cu8/0.jpg)](https://www.youtube.com/watch?v=bFCM-PC3cu8) เหตุผลหลักที่ต้องการนำสิ่งต่างๆ ลง GitHub คือเพื่อให้สามารถร่วมงานกับนักพัฒนาคนอื่นได้ ```mermaid flowchart LR A[🔍 ค้นหาโปรเจกต์] --> B[🍴 แยกที่เก็บ] B --> C[📥 โคลนไปยังเครื่อง] C --> D[🌿 สร้างสาขา] D --> E[✏️ แก้ไข] E --> F[💾 คอมมิตการเปลี่ยนแปลง] F --> G[📤 ส่งสาขา] G --> H[🔄 สร้างคำขอร่วม] H --> I{ผู้ดูแลตรวจสอบ} I -->|✅ อนุมัติ| J[🎉 รวม!] I -->|❓ ขอเปลี่ยนแปลง| K[📝 ปรับปรุง] K --> F J --> L[🧹 ทำความสะอาดสาขา] style A fill:#e3f2fd style J fill:#e8f5e8 style L fill:#fff3e0 ``` ในรีโพซิทอรีของคุณ ให้ไปที่ `Insights > Community` เพื่อตรวจสอบว่าโปรเจคของคุณเปรียบเทียบกับมาตรฐานชุมชนที่แนะนำอย่างไร อยากทำให้รีโพซิทอรีของคุณดูเป็นมืออาชีพและน่าเชิญชวนไหม? ไปที่รีโพซิทอรีของคุณแล้วคลิกที่ `Insights > Community` ฟีเจอร์เจ๋งๆ นี้จะแสดงให้คุณเห็นว่าโปรเจคของคุณเปรียบเทียบกับสิ่งที่ชุมชน GitHub มองว่าเป็น "แนวทางจัดการรีโพซิทอรีที่ดี" อย่างไร > 🎯 **ทำให้โปรเจคของคุณโดดเด่น**: รีโพซิทอรีที่จัดระเบียบดีพร้อมเอกสารครบถ้วนเหมือนกับมีหน้าร้านที่สะอาดและเชิญชวน มันบ่งบอกว่าคุณใส่ใจงานของคุณและทำให้คนอื่นอยากจะมีส่วนร่วม! **นี่คือสิ่งที่ทำให้รีโพซิทอรียอดเยี่ยม:** | สิ่งที่ต้องเพิ่ม | ทำไมถึงสำคัญ | สิ่งที่ได้สำหรับคุณ | |-------------|-------------------|---------------------| | **Description** | ความประทับใจแรกสำคัญ! | คนรู้ทันทีว่าโปรเจคของคุณทำอะไร | | **README** | หน้าแรกของโปรเจค | เหมือนไกด์นำเที่ยวที่เป็นมิตรสำหรับผู้มาเยือนใหม่ | | **Contributing Guidelines** | แสดงว่าคุณต้อนรับความช่วยเหลือ | คนรู้ชัดเจนว่าจะช่วยยังไง | | **Code of Conduct** | สร้างพื้นที่เป็นมิตร | ทุกคนรู้สึกยินดีต้อนรับให้เข้าร่วม | | **License** | ความชัดเจนทางกฎหมาย | คนอื่นรู้ว่าจะใช้โค้ดคุณยังไง | | **Security Policy** | แสดงว่าคุณรับผิดชอบ | แสดงให้เห็นถึงการปฏิบัติงานอย่างมืออาชีพ | > 💡 **เคล็ดลับมือโปร**: GitHub จัดเตรียมแม่แบบไฟล์เหล่านี้ทั้งหมด เมื่อสร้างรีโพซิทอรีใหม่ ให้ติ๊กเลือกเพื่อสร้างไฟล์เหล่านี้โดยอัตโนมัติ **ฟีเจอร์ GitHub สมัยใหม่ที่ควรสำรวจ:** 🤖 **ระบบอัตโนมัติ & CI/CD:** - **GitHub Actions** สำหรับการทดสอบและดีพลอยอัตโนมัติ - **Dependabot** สำหรับการอัปเดต dependencies อัตโนมัติ 💬 **ชุมชน & การจัดการโปรเจค:** - **GitHub Discussions** สำหรับการสนทนาของชุมชนที่นอกเหนือจากประเด็นปัญหา - **GitHub Projects** สำหรับการจัดการโปรเจคแบบบอร์ดคัมบัง - **Branch protection rules** เพื่อบังคับใช้มาตรฐานคุณภาพโค้ด ทรัพยากรทั้งหมดนี้จะช่วยในการนำสมาชิกทีมใหม่เข้าร่วมทีม และนั่นก็มักเป็นสิ่งที่ผู้ร่วมพัฒนามักจะดูก่อนจะดูโค้ดของคุณ เพื่อหาว่าโปรเจคนี้เหมาะที่จะใช้เวลาของพวกเขาหรือไม่ ✅ ไฟล์ README แม้จะต้องใช้เวลาจัดเตรียม แต่เจ้าของโปรเจคหลายคนก็ละเลย คุณสามารถหาไฟล์ตัวอย่างที่อธิบายดีมากๆ ได้ไหม? หมายเหตุ: มี [เครื่องมือช่วยสร้าง README ดีๆ](https://www.makeareadme.com/) ที่คุณอาจอยากลองใช้ ### งาน: ผสานโค้ดบางส่วน เอกสารแนะนำการมีส่วนร่วมช่วยให้คนอื่นร่วมพัฒนาโปรเจคได้ มันอธิบายว่าคุณกำลังมองหาการมีส่วนร่วมประเภทไหนและกระบวนการเป็นอย่างไร ผู้ร่วมงานต้องผ่านขั้นตอนหลายอย่างเพื่อจะร่วมงานในรีโพซิทอรีของคุณบน GitHub: 1. **Fork รีโพซิทอรีของคุณ** คุณอาจอยากให้คนอื่น _fork_ โปรเจคของคุณ Fork หมายถึงการสร้างสำเนาของรีโพซิทอรีของคุณบนโปรไฟล์ GitHub ของพวกเขา 1. **Clone** จากนั้นพวกเขาจะ clone โปรเจคไปยังเครื่องของตน 1. **สร้างสาขา** คุณจะอยากให้พวกเขาสร้าง _branch_ สำหรับงานของตน 1. **เน้นการเปลี่ยนแปลงในพื้นที่เดียว** ขอให้ผู้ร่วมงานโฟกัสไปที่การเปลี่ยนแปลงอย่างใดอย่างหนึ่งครั้งละอย่าง—แบบนี้โอกาสที่คุณจะ _merge_ งานพวกเขาจะสูงขึ้น ลองจินตนาการว่าพวกเขาเขียนแก้บั๊ก, เพิ่มฟีเจอร์ใหม่, และอัปเดตเทสต์หลายอัน—ถ้าคุณอยากหรือสามารถทำได้แค่ 2 ใน 3 หรือ 1 ใน 3 อย่าง คุณจะจัดการยังไง? ✅ ลองจินตนาการสถานการณ์ที่สาขามีความสำคัญมากต่อการเขียนและส่งมอบโค้ดดีๆ คุณคิดถึงกรณีอะไรบ้าง? > จำไว้ เปลี่ยนแปลงที่คุณอยากเห็นในโลก และสร้างสาขาสำหรับงานของคุณเองด้วย การคอมมิตที่คุณทำจะเป็นในสาขาที่คุณกำลัง “checked out” อยู่ ใช้ `git status` เพื่อตรวจสอบสาขาที่คุณอยู่ มาดูเวิร์กโฟลว์ของผู้ร่วมงานกัน สมมติว่าผู้ร่วมงานได้ _fork_ และ _clone_ รีโพซิทอรีแล้ว ดังนั้นพวกเขามี Git repo พร้อมทำงานบนเครื่องของตัวเอง: 1. **สร้างสาขา** ใช้คำสั่ง `git branch` เพื่อสร้างสาขาที่จะมีการเปลี่ยนแปลงที่ต้องการร่วม: ```bash git branch [branch-name] ``` > 💡 **วิธีร่วมสมัย**: คุณสามารถสร้างและสลับไปสาขาใหม่ในคำสั่งเดียวกันได้: ```bash git switch -c [branch-name] ``` 1. **สลับไปยังสาขางาน** สลับไปสาขาที่กำหนดและอัปเดตไดเรกทอรีทำงานด้วย `git switch`: ```bash git switch [branch-name] ``` > 💡 **หมายเหตุสมัยใหม่**: `git switch` คือคำสั่งใหม่แทน `git checkout` เมื่อต้องการเปลี่ยนสาขา เหมาะสำหรับผู้เริ่มต้นเพราะชัดเจนและปลอดภัยกว่า 1. **ทำงาน** ตอนนี้คุณต้องเพิ่มการเปลี่ยนแปลงของคุณ อย่าลืมบอก Git ด้วยคำสั่งเหล่านี้: ```bash git add . git commit -m "my changes" ``` > ⚠️ **คุณภาพข้อความคอมมิต**: ให้แน่ใจว่าคุณตั้งชื่อคอมมิตดีๆ เพื่อประโยชน์ของทั้งตัวคุณและผู้ดูแลรีโพซิทอรีที่คุณช่วยงาน ระบุชัดเจนว่าคุณเปลี่ยนอะไร! 1. **รวมงานกับสาขา `main`** เมื่อคุณทำงานเสร็จและต้องการรวมงานเข้ากับสาขา `main` ซึ่งอาจมีการเปลี่ยนแปลงไปแล้วในระหว่างนี้ ให้แน่ใจว่าได้อัปเดตสาขา `main` ให้เป็นเวอร์ชันล่าสุดก่อนด้วยคำสั่งดังนี้: ```bash git switch main git pull ``` ตอนนี้คุณต้องมั่นใจว่าไม่มี _conflicts_ เหตุการณ์ที่ Git ไม่สามารถ _combine_ การเปลี่ยนแปลงได้ในสาขาทำงานของคุณ ดังนั้นให้รันคำสั่งเหล่านี้: ```bash git switch [branch_name] git merge main ``` คำสั่ง `git merge main` จะนำการเปลี่ยนแปลงทั้งหมดจาก `main` เข้าสู่สาขาของคุณ หวังว่าคุณจะสามารถดำเนินต่อได้ ถ้าไม่ โปรแกรม VS Code จะแจ้งตำแหน่งที่ Git _สับสน_ และคุณก็เพียงแก้ไขไฟล์ที่ได้รับผลกระทบเพื่อระบุว่าส่วนไหนถูกต้องที่สุด 💡 **ทางเลือกร่วมสมัย**: ลองใช้ `git rebase` เพื่อประวัติการเปลี่ยนแปลงที่สะอาดขึ้น: ```bash git rebase main ``` นี่จะเล่นคอมมิตของคุณซ้ำด้านบนของสาขา main ล่าสุด สร้างประวัติแบบเส้นตรง 1. **ส่งงานของคุณไปยัง GitHub** การส่งงานไป GitHub มีสองส่วน คือการ push สาขาของคุณขึ้นรีโพซิทอรี แล้วเปิด PR, Pull Request ```bash git push --set-upstream origin [branch-name] ``` คำสั่งด้านบนสร้างสาขาบนรีโพซิทอรีที่คุณ fork มาแล้ว ### 🤝 **เช็คทักษะการทำงานร่วมกัน: พร้อมทำงานกับผู้อื่นหรือยัง?** **มาดูความรู้สึกของคุณเกี่ยวกับการร่วมมือกัน:** - คุณเข้าใจแนวคิดเรื่องการ fork และ pull request มากขึ้นไหมตอนนี้? - มีเรื่องอะไรเกี่ยวกับสาขาที่คุณอยากฝึกฝนเพิ่มไหม? - คุณรู้สึกสบายใจแค่ไหนกับการร่วมมือในโปรเจคของคนอื่น? ```mermaid mindmap root((การทำงานร่วมกันของ Git)) Branching สาขาคุณสมบัติ สาขาแก้ไขบั๊ก งานทดลอง Pull Requests การตรวจสอบโค้ด การอภิปราย การทดสอบ Best Practices ข้อความคอมมิตที่ชัดเจน การเปลี่ยนแปลงขนาดเล็กและมุ่งเน้น เอกสารที่ดี ``` > **เพิ่มความมั่นใจ**: นักพัฒนาทุกคนที่คุณชื่นชมนั้น เคยประหม่ากับ pull request แรกของตัวเองมาก่อน ชุมชน GitHub ต้อนรับผู้มาใหม่อย่างอบอุ่นเสมอ! 1. **เปิด PR** ต่อไป คุณต้องการเปิด PR ทำได้โดยไปที่รีโพซิทอรี fork บน GitHub คุณจะเห็นแจ้งให้สร้าง PR ใหม่ คลิกแล้วคุณจะเข้าสู่หน้าแก้ไขหัวข้อข้อความและคำอธิบาย PR ให้เหมาะสม ตอนนี้ผู้ดูแลรีโพซิทอรีที่คุณ fork จะเห็น PR นี้ และ _ขอให้โชคดี_ พวกเขาจะยอมรับและ _merge_ PR ของคุณ คุณจึงกลายเป็นผู้ร่วมพัฒนาแล้ว เย้ :) 💡 **เคล็ดลับสมัยใหม่**: คุณยังสามารถสร้าง PR โดยใช้ GitHub CLI ได้ด้วย: ```bash gh pr create --title "Your PR title" --body "Description of changes" ``` 🔧 **แนวปฏิบัติที่ดีสำหรับ PR:** - ลิงก์ไปยัง issue ที่เกี่ยวข้องโดยใช้คำสำคัญ เช่น "Fixes #123" - เพิ่มภาพหน้าจอสำหรับการเปลี่ยนแปลง UI - ขอรีวิวเวอร์เฉพาะเจาะจง - ใช้ draft PR สำหรับงานที่ยังดำเนินการ - ตรวจสอบให้แน่ใจว่าการตรวจสอบ CI ผ่านทั้งหมดก่อนขอรีวิว 1. **ทำความสะอาด** เป็นแนวปฏิบัติที่ดีที่จะ _ทำความสะอาด_ หลังจากที่คุณรวม PR ได้สำเร็จแล้ว คุณต้องการทำความสะอาดทั้งสาขาท้องถิ่นของคุณและสาขาที่คุณผลักไปยัง GitHub ก่อนอื่นให้ลบทิ้งในเครื่องด้วยคำสั่งต่อไปนี้: ```bash git branch -d [branch-name] ``` ตรวจสอบให้แน่ใจว่าคุณไปที่หน้า GitHub สำหรับรีโปที่ถูก fork ต่อไปและลบสาขารีโมทที่คุณเพิ่งผลักไปยังนั้น `Pull request` ดูเหมือนเป็นคำที่แปลกเพราะจริง ๆ แล้วคุณต้องการผลักการเปลี่ยนแปลงของคุณไปยังโครงการ แต่ผู้ดูแล (เจ้าของโครงการ) หรือทีมหลักจำเป็นต้องพิจารณาการเปลี่ยนแปลงของคุณก่อนที่จะผสานกับสาขา "main" ของโครงการ ดังนั้นคุณจึงกำลังร้องขอการตัดสินใจเปลี่ยนแปลงจากผู้ดูแล Pull request คือที่ที่ใช้เปรียบเทียบและอภิปรายความแตกต่างที่แนะนำบนสาขาพร้อมกับการตรวจสอบ ความเห็น การทดสอบแบบบูรณาการ และอื่น ๆ Pull request ที่ดีจะปฏิบัติตามกฎโดยประมาณเดียวกับข้อความ commit คุณสามารถเพิ่มการอ้างอิงปัญหาในตัวติดตามปัญหา เมื่อการทำงานของคุณแก้ไขปัญหานั้น ตัวอย่างเช่น โดยใช้ `#` ตามด้วยหมายเลขของปัญหาของคุณ เช่น `#97` 🤞 ขอให้ทุกการตรวจสอบผ่านและเจ้าของโครงการรวมการเปลี่ยนแปลงของคุณเข้ากับโครงการ 🤞 อัปเดตสาขาทำงานท้องถิ่นปัจจุบันของคุณด้วย commit ใหม่ทั้งหมดจากสาขารีโมทที่สอดคล้องกันบน GitHub: `git pull` ## การมีส่วนร่วมกับ Open Source (โอกาสของคุณที่จะสร้างผลกระทบ!) คุณพร้อมสำหรับสิ่งที่จะทำให้คุณตะลึงมั้ย? 🤯 มาพูดถึงการมีส่วนร่วมกับโครงการโอเพนซอร์สกัน – ฉันรู้สึกตื่นเต้นมากที่จะได้แบ่งปันเรื่องนี้กับคุณ! นี่คือโอกาสของคุณที่จะเป็นส่วนหนึ่งของสิ่งที่ยอดเยี่ยมจริง ๆ ลองจินตนาการถึงการปรับปรุงเครื่องมือที่นักพัฒนากว่าล้านคนใช้ทุกวัน หรือแก้ไขบั๊กในแอปที่เพื่อนของคุณชื่นชอบ นั่นไม่ใช่แค่ความฝัน – นั่นคือสิ่งที่การมีส่วนร่วมกับโอเพนซอร์สหมายถึง! นี่คือสิ่งที่ทำให้ฉันตื่นเต้นทุกครั้งที่คิดถึง: ทุกเครื่องมือที่คุณเรียนรู้ – ตัวแก้ไขโค้ดของคุณ เฟรมเวิร์กที่เราจะสำรวจ และแม้แต่อินเทอร์เฟซเบราว์เซอร์ที่คุณใช้อ่านนี้ – เริ่มต้นจากใครซักคนที่เหมือนคุณ ที่สร้างการมีส่วนร่วมครั้งแรกของเขา นักพัฒนาผู้เก่งกาจที่สร้างส่วนขยาย VS Code ที่คุณชื่นชอบ? พวกเขาเคยเป็นมือใหม่ที่คลิก "create pull request" ด้วยมือที่สั่นๆ เหมือนกับที่คุณกำลังจะทำตอนนี้ และนี่คือส่วนที่สวยงามที่สุด: ชุมชนโอเพนซอร์สเปรียบเสมือนกอดกลุ่มใหญ่ที่สุดบนอินเทอร์เน็ต โครงการส่วนใหญ่จะมองหาคนใหม่อย่างจริงจังและมีปัญหาที่ติดแท็ก "good first issue" สำหรับคนอย่างคุณอย่างเฉพาะเจาะจง! ผู้ดูแลรู้สึกตื่นเต้นเมื่อเห็นผู้มีส่วนร่วมใหม่เพราะพวกเขานึกถึงก้าวแรกของตนเอง ```mermaid flowchart TD A[🔍 สำรวจ GitHub] --> B[🏷️ หา "good first issue"] B --> C[📖 อ่านแนวทางร่วมพัฒนา] C --> D[🍴 Fork เก็บข้อมูล] D --> E[💻 ตั้งค่าสภาพแวดล้อมในเครื่อง] E --> F[🌿 สร้างสาขาคุณสมบัติ] F --> G[✨ ส่งผลงานของคุณ] G --> H[🧪 ทดสอบการเปลี่ยนแปลง] H --> I[📝 เขียนคำสั่ง commit ให้ชัดเจน] I --> J[📤 ดัน & สร้าง PR] J --> K[💬 ตอบโต้กับคำแนะนำ] K --> L[🎉 รวม! คุณเป็นผู้ร่วมพัฒนาแล้ว!] L --> M[🌟 หา issue ถัดไป] style A fill:#e1f5fe style L fill:#c8e6c9 style M fill:#fff59d ``` คุณไม่ได้แค่เรียนรู้การเขียนโค้ดที่นี่ – คุณกำลังเตรียมตัวเข้าร่วมเป็นส่วนหนึ่งของครอบครัวผู้สร้างทั่วโลกที่ตื่นขึ้นทุกวันและคิดว่า "เราจะทำให้โลกดิจิทัลดีขึ้นเล็กน้อยได้อย่างไร?" ยินดีต้อนรับสู่คลับ! 🌟 ก่อนอื่น มาค้นหารีโปลที่คุณสนใจบน GitHub และคุณอยากมีส่วนร่วมเปลี่ยนแปลง คุณจะต้องคัดลอกเนื้อหานั้นไปยังเครื่องของคุณ ✅ วิธีที่ดีในการหาคลัง 'เหมาะสำหรับผู้เริ่มต้น' คือ [ค้นหาตามแท็ก 'good-first-issue'](https://github.blog/2020-01-22-browse-good-first-issues-to-start-contributing-to-open-source/) ![Copy a repo locally](../../../../translated_images/clone_repo.5085c48d666ead57.th.png) มีหลายวิธีในการคัดลอกโค้ด วิธีหนึ่งคือการ "clone" เนื้อหาของรีโปโดยใช้ HTTPS, SSH หรือใช้ GitHub CLI (Command Line Interface) เปิดเทอร์มินอลของคุณและโคลนรีโปดังนี้: ```bash # การใช้ HTTPS git clone https://github.com/ProjectURL # การใช้ SSH (จำเป็นต้องตั้งค่า SSH key) git clone git@github.com:username/repository.git # การใช้ GitHub CLI gh repo clone username/repository ``` เพื่อทำงานกับโครงการ ให้สลับไปยังโฟลเดอร์ที่ถูกต้อง: `cd ProjectURL` คุณยังสามารถเปิดโครงการทั้งหมดโดยใช้: - **[GitHub Codespaces](https://github.com/features/codespaces)** - สภาพแวดล้อมการพัฒนาบนคลาวด์ของ GitHub พร้อม VS Code ในเบราว์เซอร์ - **[GitHub Desktop](https://desktop.github.com/)** - แอปพลิเคชัน GUI สำหรับการทำงานกับ Git - **[GitHub.dev](https://github.dev)** - กดปุ่ม `.` บนรีโป GitHub ใดก็ได้เพื่อเปิด VS Code ในเบราว์เซอร์ - **VS Code** พร้อมส่วนขยาย GitHub Pull Requests สุดท้าย คุณสามารถดาวน์โหลดโค้ดในโฟลเดอร์ซิป ### สิ่งน่าสนใจเพิ่มเติมเกี่ยวกับ GitHub คุณสามารถกดดาว, ติดตาม และ/หรือ "fork" รีโปสาธารณะใด ๆ บน GitHub คุณสามารถค้นหารีโปที่คุณกดดาวไว้ในเมนูดรอปดาวน์ด้านบนขวา มันเหมือนการบุ๊กมาร์ก แต่นี่สำหรับโค้ด โครงการต่าง ๆ มีตัวติดตามปัญหา โดยส่วนใหญ่บน GitHub ในแท็บ "Issues" เว้นแต่จะระบุอย่างอื่น ซึ่งผู้คนจะพูดคุยกันเกี่ยวกับปัญหาที่เกี่ยวข้องกับโครงการ และแท็บ Pull Requests คือที่ที่ผู้คนพูดคุยและตรวจสอบการเปลี่ยนแปลงที่กำลังดำเนินการ โครงการอาจมีการอภิปรายในฟอรัม รายชื่อเมล หรือช่องแชทเช่น Slack, Discord หรือ IRC 🔧 **คุณสมบัติทันสมัยของ GitHub**: - **GitHub Discussions** - ฟอรัมในตัวสำหรับการสนทนาของชุมชน - **GitHub Sponsors** - สนับสนุนผู้ดูแลด้วยการเงิน - **แท็บ Security** - รายงานช่องโหว่และคำแนะนำด้านความปลอดภัย - **แท็บ Actions** - ดูเวิร์กโฟลว์อัตโนมัติและ pipelines CI/CD - **แท็บ Insights** - วิเคราะห์เกี่ยวกับผู้มีส่วนร่วม, commits, และสุขภาพโครงการ - **แท็บ Projects** - เครื่องมือจัดการโครงการในตัวของ GitHub ✅ ลองสำรวจรีโป GitHub ใหม่ของคุณและลองทำสิ่งต่าง ๆ เช่น แก้ไขการตั้งค่า, เพิ่มข้อมูลในรีโป, สร้างโครงการ (เช่น กระดาน Kanban) และตั้งค่า GitHub Actions เพื่อทำงานอัตโนมัติ มีอะไรให้ทำมากมาย! --- ## 🚀 ความท้าทาย ได้เวลาใช้พลัง GitHub ใหม่ของคุณแล้ว! 🚀 นี่คือความท้าทายที่จะทำให้ทุกอย่างเข้าที่เข้าทางอย่างพึงพอใจที่สุด: ชวนเพื่อน (หรือสมาชิกครอบครัวที่ชอบถามว่าคุณทำอะไรกับ "เรื่องคอมพิวเตอร์" ทั้งหมดนี้) มาร่วมผจญภัยในการเขียนโค้ดร่วมกัน! นี่แหละคือเวทมนตร์จริง ๆ – สร้างโครงการ ให้เขา fork สร้างสาขา และรวมการเปลี่ยนแปลงเหมือนมือโปรที่คุณกำลังจะกลายเป็น ไม่โกหกนะ – คุณอาจหัวเราะกันในบางช่วง (โดยเฉพาะตอนที่คุณทั้งคู่พยายามแก้ไขบรรทัดเดียวกัน) บางทีอาจเกาหัวด้วยความสับสน แต่คุณจะมีช่วงเวลาที่น่าทึ่งแบบ "อ๋อ!" ที่ทำให้การเรียนรู้ทั้งหมดคุ้มค่า นอกจากนี้ ยังมีสิ่งพิเศษเกี่ยวกับการแบ่งปันการรวมครั้งแรกที่สำเร็จกับคนอื่น – เหมือนฉลองเล็ก ๆ ว่าคุณมาไกลแค่ไหน! ยังไม่มีเพื่อนเขียนโค้ดหรือ? ไม่ต้องกังวลนะ! ชุมชน GitHub มีคนต้อนรับอย่างอบอุ่นที่จำได้ว่าตัวเองเคยใหม่ มองหาคลังที่มีป้าย "good first issue" – มันเหมือนบอกว่า "เฮ้ มือใหม่ มาร่วมเรียนกับเรา!" เจ๋งมากใช่มั้ย? ## แบบทดสอบหลังการบรรยาย [Post-lecture quiz](https://ff-quizzes.netlify.app/web/en/) ## ทบทวน & เรียนรู้ต่อเนื่อง ว้าว! 🎉 ดูสิคุณ – คุณเพิ่งพิชิตพื้นฐาน GitHub เหมือนแชมป์เปี้ยนจริง ๆ! ถ้าคุณรู้สึกสมองเต็มตอนนี้ นั่นเป็นเรื่องปกติและจริง ๆ แล้วเป็นสัญญาณที่ดี คุณเพิ่งเรียนรู้เครื่องมือที่ฉันใช้เวลาหลายสัปดาห์กว่าจะชินตอนเริ่มต้น Git และ GitHub มีพลังอย่างมาก (อย่างจริงจังมาก) และนักพัฒนาทุกคนที่ฉันรู้จัก – รวมถึงคนที่ดูเหมือนเป็นพ่อมดตอนนี้ – ต้องฝึกฝนและทำพลาดบ้างก่อนที่จะเข้าใจทั้งหมด ความจริงที่ว่าคุณผ่านบทเรียนนี้แสดงว่าคุณกำลังอยู่บนเส้นทางเพื่อเชี่ยวชาญเครื่องมือที่สำคัญที่สุดในกล่องเครื่องมือของนักพัฒนา นี่คือแหล่งข้อมูลดี ๆ ที่จะช่วยคุณฝึกและเก่งขึ้นอีก: - [คู่มือการมีส่วนร่วมกับซอฟต์แวร์โอเพนซอร์ส](https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution) – แผนที่เส้นทางสู่การสร้างความแตกต่าง - [ชีทสรุปคำสั่ง Git](https://training.github.com/downloads/github-git-cheat-sheet/) – เก็บไว้สำหรับอ้างอิงอย่างรวดเร็ว! และจำไว้: ฝึกฝนทำให้ก้าวหน้า ไม่ใช่สมบูรณ์แบบ! ยิ่งคุณใช้ Git และ GitHub มากเท่าไหร่ ก็จะยิ่งเป็นธรรมชาติมากขึ้น GitHub ได้สร้างคอร์สแบบอินเทอร์แอคทีฟที่ให้คุณฝึกในสภาพแวดล้อมที่ปลอดภัย: - [การแนะนำ GitHub](https://github.com/skills/introduction-to-github) - [สื่อสารด้วย Markdown](https://github.com/skills/communicate-using-markdown) - [GitHub Pages](https://github.com/skills/github-pages) - [จัดการความขัดแย้ง merge](https://github.com/skills/resolve-merge-conflicts) **อยากลองของใหม่? ดูเครื่องมือทันสมัยเหล่านี้:** - [เอกสาร GitHub CLI](https://cli.github.com/manual/) – สำหรับคนที่อยากรู้สึกเหมือนพ่อมดคอมมานด์ไลน์ - [เอกสาร GitHub Codespaces](https://docs.github.com/en/codespaces) – เขียนโค้ดบนคลาวด์! - [เอกสาร GitHub Actions](https://docs.github.com/en/actions) – อัตโนมัติทุกสิ่ง - [แนวปฏิบัติที่ดีที่สุดของ Git](https://www.atlassian.com/git/tutorials/comparing-workflows) – ยกระดับวิธีทำงานของคุณ ## ความท้าทาย GitHub Copilot Agent 🚀 ใช้โหมด Agent เพื่อทำความท้าทายต่อไปนี้ให้สำเร็จ: **คำอธิบาย:** สร้างโครงการเว็บพัฒนาร่วมที่แสดงเวิร์กโฟลว์ GitHub แบบสมบูรณ์ที่คุณเรียนรู้ในบทเรียนนี้ ความท้าทายนี้จะช่วยให้คุณฝึกสร้างรีโป การทำงานร่วมกัน และเวิร์กโฟลว์ Git ที่ทันสมัยในสถานการณ์จริง **คำกระตุ้น:** สร้างรีโป GitHub สาธารณะใหม่สำหรับโครงการ "ทรัพยากรการพัฒนาเว็บ" ที่เรียบง่าย รีโปควรรวมไฟล์ README.md ที่มีโครงสร้างดี รายการเครื่องมือและทรัพยากรการพัฒนาเว็บที่เป็นประโยชน์ แบ่งตามหมวดหมู่ (HTML, CSS, JavaScript เป็นต้น) ตั้งค่ารีโปด้วยมาตรฐานชุมชนที่เหมาะสม รวมถึงใบอนุญาต, แนวทางการร่วมมือ, และรหัสจรรยาบรรณ สร้างสาขาฟีเจอร์อย่างน้อยสองสาขา: หนึ่งสำหรับเพิ่มทรัพยากร CSS อีกหนึ่งสำหรับทรัพยากร JavaScript ทำ commit ในแต่ละสาขาพร้อมข้อความ commit ที่อธิบายรายละเอียด จากนั้นสร้าง pull request เพื่อรวมการเปลี่ยนแปลงกลับไปสู่ main เปิดใช้ฟีเจอร์ GitHub เช่น Issues, Discussions และตั้งค่าเวิร์กโฟลว์ GitHub Actions พื้นฐานสำหรับการตรวจสอบอัตโนมัติ ## การบ้าน ภารกิจของคุณ หากคุณเลือกที่จะรับ: ทำคอร์ส [Introduction to GitHub](https://github.com/skills/introduction-to-github) บน GitHub Skills คอร์สอินเทอร์แอคทีฟนี้จะให้คุณฝึกทุกอย่างที่เรียนในสภาพแวดล้อมที่ปลอดภัยและมีคำแนะนำ และคุณจะได้รับเหรียญรางวัลเจ๋ง ๆ เมื่อจบ! 🏅 **พร้อมสำหรับความท้าทายเพิ่มเติมหรือยัง?** - ตั้งค่า SSH authentication สำหรับบัญชี GitHub ของคุณ (ไม่ต้องใช้รหัสผ่านอีกต่อไป!) - ลองใช้ GitHub CLI สำหรับการทำงาน Git ประจำวันของคุณ - สร้างรีโปพร้อมเวิร์กโฟลว์ GitHub Actions - สำรวจ GitHub Codespaces โดยการเปิดรีโปนี้ในตัวแก้ไขบนคลาวด์ --- ## 🚀 เส้นเวลาความเชี่ยวชาญ GitHub ของคุณ ### ⚡ **สิ่งที่คุณทำได้ใน 5 นาทีถัดไป** - [ ] กดดาวรีโปนี้และอีก 3 โครงการที่คุณสนใจ - [ ] ตั้งค่าการยืนยันตัวตนสองชั้นในบัญชี GitHub ของคุณ - [ ] สร้าง README ง่าย ๆ สำหรับรีโปแรกของคุณ - [ ] ติดตามนักพัฒนาที่สร้างแรงบันดาลใจคุณ 5 คน ### 🎯 **สิ่งที่คุณทำได้ในชั่วโมงนี้** - [ ] ทำแบบทดสอบหลังบทเรียนและคิดทบทวนการเดินทางกับ GitHub ของคุณ - [ ] ตั้งค่า SSH keys สำหรับการยืนยันตัวตนแบบไม่ต้องใช้รหัสผ่าน - [ ] สร้าง commit แรกที่มีความหมายพร้อมข้อความ commit ที่ดี - [ ] สำรวจแท็บ "Explore" ของ GitHub เพื่อค้นหาโครงการยอดนิยม - [ ] ฝึกการ fork รีโปและทำการเปลี่ยนแปลงเล็กน้อย ### 📅 **การผจญภัยกับ GitHub ตลอดสัปดาห์** - [ ] ทำคอร์ส GitHub Skills (Introduction to GitHub, Markdown) - [ ] สร้าง pull request แรกให้กับโครงการโอเพนซอร์ส - [ ] ตั้งค่าเว็บไซต์ GitHub Pages เพื่อแสดงผลงานของคุณ - [ ] เข้าร่วม GitHub Discussions ในโครงการที่คุณสนใจ - [ ] สร้างรีโปพร้อมมาตรฐานชุมชนที่เหมาะสม (README, License เป็นต้น) - [ ] ลองใช้ GitHub Codespaces สำหรับการพัฒนาบนคลาวด์ ### 🌟 **การเปลี่ยนแปลงตลอดเดือน** - [ ] มีส่วนร่วมกับโครงการโอเพนซอร์ส 3 โครงการที่แตกต่างกัน - [ ] เป็นพี่เลี้ยงให้กับคนที่เพิ่งเริ่มใช้ GitHub (ส่งต่อความรู้) - [ ] ตั้งค่าเวิร์กโฟลว์อัตโนมัติด้วย GitHub Actions - [ ] สร้างผลงานแสดงการมีส่วนร่วมใน GitHub ของคุณ - [ ] เข้าร่วมกิจกรรม Hacktoberfest หรือกิจกรรมชุมชนอื่น ๆ - [ ] เป็นผู้ดูแลโครงการของคุณเองที่คนอื่นมีส่วนร่วมด้วย ### 🎓 **ตรวจสอบความเชี่ยวชาญ GitHub สุดท้าย** **ฉลองความก้าวหน้าของคุณ:** - คุณชอบอะไรที่สุดเกี่ยวกับการใช้ GitHub? - ฟีเจอร์การทำงานร่วมกันไหนที่คุณตื่นเต้นที่สุด? - คุณรู้สึกมั่นใจในการมีส่วนร่วมกับโอเพนซอร์สแค่ไหนตอนนี้? - โครงการแรกที่คุณอยากมีส่วนร่วมคืออะไร? ```mermaid journey title การเดินทางความมั่นใจใน GitHub ของคุณ section วันนี้ Nervous: 3: You Curious: 4: You Excited: 5: You section สัปดาห์นี้ Practicing: 4: You Contributing: 5: You Connecting: 5: You section เดือนหน้า Collaborating: 5: You Leading: 5: You Inspiring Others: 5: You ``` > 🌍 **ยินดีต้อนรับสู่ชุมชนนักพัฒนาทั่วโลก!** ตอนนี้คุณมีเครื่องมือที่จะทำงานร่วมกับนักพัฒนากว่าล้านคนทั่วโลก การมีส่วนร่วมครั้งแรกของคุณอาจดูเล็กน้อย แต่จงจำไว้ – โครงการโอเพนซอร์สใหญ่ ๆ ทุกโครงการเริ่มจากใครบางคนที่ทำ commit ครั้งแรก คำถามไม่ใช่ว่าคุณจะสร้างผลกระทบได้หรือไม่ แต่คือโครงการเจ๋ง ๆ ใดจะได้รับประโยชน์จากมุมมองของคุณก่อน! 🚀 จำไว้ว่าผู้เชี่ยวชาญทุกคนเคยเป็นมือใหม่มาก่อน คุณทำได้แน่นอน! 💪 --- **ข้อจำกัดความรับผิดชอบ**: เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษาอัตโนมัติ [Co-op Translator](https://github.com/Azure/co-op-translator) แม้เราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลอัตโนมัติอาจมีข้อผิดพลาดหรือความคลาดเคลื่อนได้ เอกสารต้นฉบับในภาษาต้นทางควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลสำคัญ ขอแนะนำให้ใช้บริการแปลโดยนักแปลมืออาชีพ เราจะไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดขึ้นจากการใช้การแปลนี้