1. บทนำ
ในช่วงไม่กี่ปีที่ผ่านมา “Git” กลายเป็นเครื่องมือที่ขาดไม่ได้สำหรับการพัฒนาซอฟต์แวร์ งานวิจัย และโปรเจกต์ส่วนบุคคล โดยเฉพาะอย่างยิ่ง Git ในฐานะระบบควบคุมเวอร์ชันที่ถูกใช้ทั่วโลก มีบทบาทสำคัญในการแบ่งปันและจัดการโค้ดในทีมพัฒนาและโปรเจกต์โอเพ่นซอร์ส
บทความนี้จะอธิบายวิธีการโคลน (clone) Git repository บน Ubuntu ซึ่งเป็นดิสทริบิวชัน Linux ที่ได้รับความนิยม โดยใช้คำสั่ง “git clone” ให้เข้าใจง่ายแม้สำหรับมือใหม่
“git clone” เป็นคำสั่งพื้นฐานที่ใช้คัดลอกโปรเจกต์จากรีโมตรีโพซิทอรี (เช่น โปรเจกต์บน GitHub หรือ GitLab) มายังเครื่องของคุณอย่างสมบูรณ์
เมื่อผู้ใช้ Ubuntu ใช้งาน “git clone” ได้อย่างคล่องแคล่ว ก็จะสามารถติดตั้งซอฟต์แวร์โอเพ่นซอร์สและสร้างสภาพแวดล้อมการพัฒนาได้อย่างราบรื่น
รวมถึงการเข้าร่วมทีมและชุมชนต่าง ๆ ก็จะสะดวกยิ่งขึ้น
บทความนี้จะครอบคลุมตั้งแต่การติดตั้ง Git วิธีใช้ “git clone” ขั้นพื้นฐาน ตลอดจนวิธีแก้ไขข้อผิดพลาดที่พบบ่อย
เนื้อหานี้เหมาะทั้งสำหรับมือใหม่ที่เพิ่งใช้ Git บน Ubuntu และผู้ที่เคยใช้แต่ต้องการทบทวนความรู้
2. ข้อกำหนดเบื้องต้นและการตั้งค่าสภาพแวดล้อม
ในการใช้ “git clone” บน Ubuntu ก่อนอื่นต้องติดตั้ง Git ไว้ในเครื่องเสียก่อน รวมถึงตั้งค่าการเข้าถึงรีโมตรีโพซิทอรีและเตรียมข้อมูลยืนยันตัวตนให้พร้อม ในส่วนนี้จะอธิบายวิธีการเตรียมสภาพแวดล้อมทีละขั้นตอน
2.1 วิธีติดตั้ง Git
บน Ubuntu คุณสามารถติดตั้ง Git ได้ง่าย ๆ จากรีโพซิทอรีทางการ เพียงเปิด Terminal แล้วรันคำสั่งดังต่อไปนี้ตามลำดับ
sudo apt update
sudo apt install git
หลังติดตั้งเสร็จ ให้ตรวจสอบว่า Git ติดตั้งเรียบร้อยแล้วโดยรันคำสั่งนี้เพื่อตรวจสอบเวอร์ชัน
git --version
หากแสดงข้อมูลเวอร์ชัน แสดงว่าติดตั้งสำเร็จแล้ว
2.2 การตั้งชื่อผู้ใช้และอีเมล
Git จะบันทึกข้อมูลว่า “ใคร ทำอะไร เมื่อไร” ในประวัติการเปลี่ยนแปลงไฟล์ ดังนั้น หากใช้ Git เป็นครั้งแรก ควรกำหนดชื่อผู้ใช้และอีเมลไว้ล่วงหน้า
git config --global user.name "ชื่อของคุณ"
git config --global user.email "your.email@example.com"
ค่าตั้งนี้จะมีผลกับ Git ทุกโปรเจกต์ หากต้องการกำหนดค่าเฉพาะโปรเจกต์ ให้รันคำสั่งข้างต้นในโฟลเดอร์โปรเจกต์โดยไม่ใส่ --global
2.3 การเลือกและเตรียมวิธีการยืนยันตัวตน
เมื่อเข้าถึงรีโมตรีโพซิทอรีด้วย Git มีวิธีการยืนยันตัวตนหลัก ๆ 2 แบบ คือ “HTTPS” และ “SSH”
- HTTPS
เข้าถึงด้วย URL เหมือนกับการใช้งานเว็บเบราว์เซอร์ ปัจจุบัน GitHub และ GitLab แนะนำให้ใช้ Personal Access Token (PAT) แทนรหัสผ่าน - SSH
ใช้ key คู่ (public key และ private key) เพื่อยืนยันตัวตน ปลอดภัยสูงและเมื่อตั้งค่าเสร็จจะไม่ต้องป้อนรหัสผ่านซ้ำ เหมาะสำหรับผู้ที่ใช้ Git บ่อย
2.4 การใช้ Git Credential Manager (GCM) (ถ้าจำเป็น)
หากต้องการจัดการรหัสผ่านหรือโทเคนให้ปลอดภัยและสะดวกขึ้น แนะนำให้ใช้ Git Credential Manager (GCM)
GCM จะช่วยให้จัดเก็บข้อมูลยืนยันตัวตนได้อย่างปลอดภัยและไม่ต้องกรอกข้อมูลทุกครั้ง ใน Ubuntu สามารถติดตั้งผ่านเอกสารทางการหรือแพ็กเกจได้
เพียงเท่านี้ก็เตรียมพร้อมใช้งาน “git clone” บน Ubuntu
ในบทถัดไปจะอธิบายขั้นตอนการโคลนรีโพซิทอรีจริง
3. วิธีใช้ git clone เบื้องต้น
คำสั่ง “git clone” ใช้สำหรับคัดลอกเนื้อหาทั้งหมดจากรีโมตรีโพซิทอรีมายังเครื่องของคุณ เป็นคำสั่งหลักเมื่อคุณต้องการใช้โปรเจกต์จากคนอื่นในทีมพัฒนา หรือโปรเจกต์โอเพ่นซอร์ส
3.1 รูปแบบคำสั่งพื้นฐาน
รูปแบบที่ง่ายที่สุดคือ
git clone <URL ของรีโพซิทอรี>
ตัวอย่างเช่น การโคลนรีโพซิทอรีแบบสาธารณะบน GitHub
git clone https://github.com/exampleuser/sample-project.git
เมื่อรันคำสั่งนี้ จะมีโฟลเดอร์ใหม่ชื่อ “sample-project” ถูกสร้างในไดเรกทอรีปัจจุบันและมีไฟล์ทั้งหมดของรีโพซิทอรีนั้น
3.2 วิธีโคลนด้วย HTTPS
การโคลนผ่าน HTTPS ได้รับความนิยมมาก โดย URL จะขึ้นต้นด้วย “https://” อาจต้องกรอกข้อมูลยืนยันตัวตน (ชื่อผู้ใช้, Personal Access Token) ในครั้งแรก
git clone https://github.com/ชื่อผู้ใช้/ชื่อรีโพซิทอรี.git
3.3 วิธีโคลนด้วย SSH
หากคุณตั้งค่า SSH key แล้ว จะสามารถโคลนได้อย่างปลอดภัยโดยไม่ต้องกรอกรหัสผ่าน URL สำหรับ SSH จะมีรูปแบบเช่น “git@github.com:”
git clone git@github.com:ชื่อผู้ใช้/ชื่อรีโพซิทอรี.git
ก่อนใช้วิธีนี้ ต้องเพิ่ม public key ของคุณใน GitHub หรือ GitLab ก่อน
3.4 โครงสร้างรีโพซิทอรีหลังโคลน
เมื่อรัน “git clone” นอกจากไฟล์และโฟลเดอร์ของโปรเจกต์แล้ว จะมีโฟลเดอร์ “.git” สำหรับเก็บข้อมูลเวอร์ชัน
- โฟลเดอร์ .git
เก็บประวัติและการตั้งค่าของรีโพซิทอรี ไฟล์ในโฟลเดอร์นี้อยู่ภายใต้การจัดการของ Git - Working directory
ไฟล์โค้ดและเอกสารที่คุณใช้ในโปรเจกต์
3.5 ข้อควรระวังเกี่ยวกับไดเรกทอรีขณะโคลน
“git clone” จะสร้างโฟลเดอร์ใหม่ในไดเรกทอรีที่รันคำสั่ง ดังนั้นควร cd ไปยังไดเรกทอรีที่ต้องการก่อน
4. วิธีโคลนเฉพาะสาขา (branch)
รีโพซิทอรี Git อาจมีหลาย branch โดยปกติ “git clone” จะโคลนสาขาหลัก (main หรือ master) หากต้องการโคลนเฉพาะสาขา สามารถทำตามนี้
4.1 การใช้ –branch
เพิ่มออปชัน --branch
หรือ -b
เพื่อเลือก branch ที่ต้องการโคลน
git clone --branch ชื่อสาขา URL ของรีโพซิทอรี
ตัวอย่าง หากต้องการโคลนสาขา develop
git clone --branch develop https://github.com/exampleuser/sample-project.git
จะได้รีโพซิทอรีพร้อมเช็คเอาท์ที่ branch develop
4.2 ใช้ –single-branch ร่วมด้วย
โดยปกติ git clone
จะดาวน์โหลดข้อมูลของทุก branch แต่หากใช้ --single-branch
จะดาวน์โหลดเฉพาะ branch ที่ระบุ ลดการใช้พื้นที่และอินเทอร์เน็ต
git clone --branch ชื่อสาขา --single-branch URL ของรีโพซิทอรี
เหมาะกับกรณีที่ต้องการตรวจสอบ branch เดียวหรือรีโพซิทอรีขนาดใหญ่
4.3 หากต้องการ branch อื่นหลังโคลน
หลังโคลนแล้ว หากต้องการ branch อื่น ให้ใช้คำสั่ง
git fetch --all
จากนั้นสลับไปยัง branch ที่ต้องการด้วย
git checkout ชื่อสาขา
ได้เลย
4.4 หมายเหตุ
- ถ้าเป็นรีโพซิทอรีส่วนตัวหรือจำกัดสิทธิ์ ต้องยืนยันตัวตนให้ถูกต้อง
- หากระบุชื่อ branch ผิดจะเกิด error ควรตรวจสอบชื่อ branch ในรีโมตก่อน
คุณสามารถใช้ตัวเลือกของ “git clone” เพื่อโคลน branch เฉพาะได้อย่างยืดหยุ่น
5. ข้อผิดพลาดที่พบบ่อยและวิธีแก้ไข
การใช้ “git clone” อาจเจอ error หลายประเภท เช่น การยืนยันตัวตน การเชื่อมต่อ หรือสิทธิ์การเข้าถึง ต่อไปนี้คือ error ที่พบได้บ่อยบน Ubuntu และวิธีแก้ไข
5.1 ปัญหาการยืนยันตัวตน HTTPS และ Personal Access Token (PAT)
ปัจจุบัน GitHub และ GitLab ยกเลิกการใช้รหัสผ่าน ให้ใช้ Personal Access Token (PAT) แทน
ถ้าเจอ error ประมาณนี้ขณะโคลน
remote: Support for password authentication was removed...
fatal: Authentication failed for 'https://github.com/...'
ให้สร้าง PAT ใน GitHub แล้วใช้ชื่อผู้ใช้เป็น GitHub Account และใช้ PAT แทนรหัสผ่าน วิธีสร้าง PAT: ไปที่ “Settings” > “Developer settings” > “Personal access tokens”
5.2 ปัญหาการยืนยันตัวตน SSH และการลงทะเบียนคีย์
ถ้าโคลนด้วย SSH แล้วขึ้นว่า “Permission denied (publickey)” มักเกิดจาก SSH key ยังไม่ได้ลงทะเบียน
วิธีแก้ไข
- สร้าง SSH key ใน terminal (ถ้ายังไม่มี)
ssh-keygen -t ed25519 -C "your.email@example.com"
- คัดลอก public key
cat ~/.ssh/id_ed25519.pub
- เพิ่ม public key ในหน้า Settings ของ GitHub หรือ GitLab
จากนั้นจะสามารถยืนยันตัวตนผ่าน SSH ได้
5.3 ข้อผิดพลาดเกี่ยวกับสิทธิ์รีโพซิทอรี
หากโคลนรีโพซิทอรีส่วนตัวหรือองค์กรแล้วขึ้น error แบบนี้
fatal: repository 'https://github.com/ชื่อผู้ใช้/ชื่อรีโพซิทอรี.git/' not found
วิธีแก้ไข
- ตรวจสอบว่า URL ของรีโพซิทอรีถูกต้องหรือไม่
- ตรวจสอบว่าสิทธิ์การเข้าถึงถูกต้องหรือไม่
- ลองป้อนข้อมูลยืนยันตัวตนใหม่อีกครั้ง
5.4 ปัญหาเครือข่าย
หากขึ้น error เช่น “Connection timed out”, “Could not resolve host” อาจเกิดจากปัญหาอินเทอร์เน็ตหรือ proxy
วิธีแก้ไข
- ตรวจสอบว่าต่ออินเทอร์เน็ตได้ปกติหรือไม่
- ถ้าใช้ VPN หรือ proxy ให้ตรวจสอบการตั้งค่า
- ถ้าเป็นปัญหาที่ฝั่ง GitHub ให้รอสักครู่แล้วลองใหม่
5.5 ข้อผิดพลาดอื่น ๆ
- โฟลเดอร์ชื่อซ้ำ
ถ้ามีโฟลเดอร์ชื่อเดียวกันอยู่แล้ว จะโคลนไม่ได้ ให้เปลี่ยนชื่อหรือลบโฟลเดอร์เดิมก่อน - พื้นที่ดิสก์ไม่พอ
ตรวจสอบให้แน่ใจว่ามีพื้นที่ว่างเพียงพอ
เมื่อเจอ error ให้ตรวจสอบทีละจุดตามนี้แล้วจะสามารถแก้ไขได้แน่นอน
6. ตัวเลือกที่สะดวกของ git clone
คำสั่ง “git clone” มีออปชันมากมายที่ช่วยให้คุณเลือกดาวน์โหลดข้อมูลที่จำเป็น หรือโคลนรีโพซิทอรีที่มี submodule ได้สะดวกขึ้น ต่อไปนี้คือตัวเลือกที่ใช้บ่อย
6.1 –depth (โคลนเฉพาะประวัติล่าสุด)
หากต้องการเฉพาะประวัติล่าสุดของรีโพซิทอรี ให้ใช้ --depth
เพื่อดึงเฉพาะจำนวนคอมมิตที่ต้องการ
git clone --depth 1 https://github.com/exampleuser/sample-project.git
ตัวอย่างนี้จะดึงเฉพาะคอมมิตล่าสุด 1 รายการ เหมาะกับรีโพซิทอรีขนาดใหญ่หรือใช้งานกับ CI
6.2 –single-branch
โดยปกติ git clone จะดึงข้อมูลทุก branch แต่ถ้าใช้ --single-branch
จะโคลนเฉพาะ branch ที่ต้องการ ใช้ร่วมกับ --branch
บ่อย
git clone --branch develop --single-branch https://github.com/exampleuser/sample-project.git
เหมาะกับกรณีที่ต้องการเฉพาะ branch เดียว
6.3 –recursive (โคลน submodule พร้อมกัน)
ถ้ารีโพซิทอรีมี submodule ให้ใช้ --recursive
เพื่อโคลนทั้งโปรเจกต์หลักและ submodule พร้อมกัน
git clone --recursive https://github.com/exampleuser/sample-project.git
หากลืมใช้ --recursive
ตอนโคลน ให้รันคำสั่งนี้ในภายหลังได้
git submodule update --init --recursive

6.4 ออปชันที่มีประโยชน์อื่น ๆ
- –origin
หากต้องการเปลี่ยนชื่อรีโมท (จากค่าดีฟอลต์ origin) - กำหนดชื่อโฟลเดอร์
หากต้องการกำหนดชื่อโฟลเดอร์สำหรับโคลน ให้เพิ่มชื่อโฟลเดอร์ไว้ท้ายคำสั่ง
git clone https://github.com/exampleuser/sample-project.git ชื่อโฟลเดอร์ที่ต้องการ
คุณสามารถใช้ตัวเลือกเหล่านี้ร่วมกัน เพื่อให้การใช้ “git clone” มีประสิทธิภาพและยืดหยุ่นสูงสุด
7. การใช้เครื่องมือ GUI กับ git clone
สำหรับผู้ที่ไม่ถนัดคำสั่ง command line หรืออยากใช้งาน Git ได้สะดวกขึ้น แนะนำให้ใช้เครื่องมือ GUI (Graphical User Interface) บน Ubuntu มีเครื่องมือหลายตัวที่ช่วยให้โคลนรีโพซิทอรีได้ง่าย
7.1 ตัวอย่างเครื่องมือ GUI ที่นิยม
- Gittyup
เป็นไคลเอนต์ Git ที่เบาและใช้งานง่าย สามารถติดตั้งได้จากรีโพซิทอรี Ubuntu หรือ Flatpak - Visual Studio Code (VS Code)
เป็น editor ยอดนิยมที่มีส่วนเสริม Git ใช้งานได้สะดวก - GitKraken
เน้นอินเทอร์เฟซที่เข้าใจง่ายและฟีเจอร์หลากหลาย (ใช้งานฟรีสำหรับบุคคลทั่วไป)
7.2 วิธีโคลนด้วย Gittyup
- ติดตั้ง Gittyup (เช่น
sudo apt install gittyup
หรือผ่าน Flatpak) - เปิดแอป คลิก “โคลนรีโพซิทอรี” หรือ “Clone Repository”
- กรอก URL ของรีโพซิทอรี เลือกโฟลเดอร์ปลายทาง แล้วเริ่มดาวน์โหลดได้ทันที
7.3 วิธีโคลนด้วย Visual Studio Code
- เปิด VS Code คลิกไอคอน “Source Control” ทางซ้าย
- เลือก “Clone Repository” ที่แถบด้านบน
- วาง URL ของรีโพซิทอรีแล้วกด Enter เลือกโฟลเดอร์ปลายทางเพื่อเริ่มโคลน
- หลังโคลนแล้วสามารถแก้ไขโค้ด commit หรือ push ได้ทันทีใน VS Code
7.4 ข้อดีและข้อควรระวังของเครื่องมือ GUI
- ข้อดี
ไม่ต้องพิมพ์คำสั่ง ใช้งานผ่านอินเทอร์เฟซ เหมาะกับมือใหม่ สามารถดูประวัติหรือไฟล์ที่เปลี่ยนแปลงได้ง่าย - ข้อควรระวัง
แต่ละเครื่องมือมีฟีเจอร์และหน้าตาต่างกัน เลือกที่เหมาะกับงานของคุณ เริ่มจาก GUI แล้วค่อย ๆ ฝึกใช้ command line จะยืดหยุ่นมากขึ้น
หากใช้ GUI ร่วมกับ command line จะทำงานบน Ubuntu ได้สะดวกและมีประสิทธิภาพมากขึ้น
8. สรุป
บทความนี้อธิบายการใช้ “git clone” บน Ubuntu ตั้งแต่พื้นฐานจนถึงขั้นสูง
ตั้งแต่ติดตั้ง Git โคลนผ่าน HTTPS/SSH โคลนเฉพาะ branch การใช้ตัวเลือกต่าง ๆ และเครื่องมือ GUI
ครอบคลุมกระบวนการที่จำเป็นทั้งหมด
“git clone” มีประโยชน์ในหลายสถานการณ์ เช่น ติดตั้งโปรเจกต์โอเพ่นซอร์ส การทำงานร่วมกันในทีม หรือการเรียนรู้ด้วยตนเอง เมื่อคุณใช้คล่องแล้วจะช่วยให้ทำงานได้ราบรื่นมากขึ้น
สำหรับมือใหม่ ขอแนะนำให้ “ค้นหาข้อความ error หรือดูเอกสารทางการโดยตรงเมื่อมีปัญหา” และ “ลองใช้ตัวเลือกเพิ่มเติมหรือเครื่องมือ GUI เมื่อเริ่มชำนาญ” เพื่อพัฒนาทักษะอย่างต่อเนื่อง
หากมีข้อสงสัยหรือปัญหาเพิ่มเติม สามารถดู FAQ เอกสารทางการ GitHub หรือสอบถามในชุมชนได้
ขอให้คุณใช้ Ubuntu และ Git ได้อย่างเต็มประสิทธิภาพในการพัฒนาและเรียนรู้!
9. FAQ (คำถามที่พบบ่อย)
Q1: จะติดตั้ง Git บน Ubuntu ได้อย่างไร?
A1: เปิด Terminal แล้วรันคำสั่งตามนี้
sudo apt update
sudo apt install git
ติดตั้งเสร็จ รัน git --version
เพื่อตรวจสอบเวอร์ชัน
Q2: หากต้องการโคลนเฉพาะ branch ทำอย่างไร?
A2: ใช้ออปชัน --branch
(หรือ -b
) พร้อมระบุชื่อ branch
ตัวอย่าง:
git clone --branch ชื่อสาขา URL ของรีโพซิทอรี
หากใช้ --single-branch
จะดึงเฉพาะ branch นั้น
Q3: โคลนผ่าน HTTPS แล้วเกิดปัญหา authentication ทำไง?
A3: ปัจจุบันต้องใช้ Personal Access Token (PAT) แทนรหัสผ่าน สร้าง PAT ในหน้า settings ของ GitHub แล้วใช้แทนรหัสผ่านได้เลย
Q4: วิธีสร้างและเพิ่ม SSH key?
A4: สร้างคีย์ใน Terminal ด้วยคำสั่งนี้
ssh-keygen -t ed25519 -C "your.email@example.com"
คัดลอก public key ที่ ~/.ssh/id_ed25519.pub
แล้วเพิ่มใน GitHub หรือ GitLab
Q5: จะเช็ก remote URL ของรีโพซิทอรีที่โคลนแล้วได้อย่างไร?
A5: ในโฟลเดอร์โปรเจกต์ รัน
git remote -v
จะแสดง URL ของรีโมตรีโพซิทอรีทั้งหมด
Q6: หากมีโฟลเดอร์ชื่อซ้ำจะเกิดอะไรขึ้น?
A6: ถ้ามีโฟลเดอร์ชื่อเดียวกันอยู่แล้ว git clone จะ error ควรเปลี่ยนชื่อหรือลบโฟลเดอร์เดิมก่อน
Q7: จะโคลนรีโพซิทอรีที่มี submodule อย่างถูกต้องได้อย่างไร?
A7: ให้ใช้ --recursive
ขณะโคลน
git clone --recursive URL ของรีโพซิทอรี
หากโคลนมาแล้ว ให้รัน
git submodule update --init --recursive
ภายหลังได้
Q8: มีเครื่องมือ Git GUI แนะนำสำหรับ Ubuntu ไหม?
A8: Gittyup, Visual Studio Code (เสริมด้วย Git extension), และ GitKraken เป็นตัวเลือกที่นิยม เลือกตามความเหมาะสม
Q9: หลังโคลนแล้วต้องการสลับ branch ทำอย่างไร?
A9:
git fetch --all
git checkout ชื่อสาขา
สามารถสลับไปยัง branch อื่นได้