目次

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 ยังไม่ได้ลงทะเบียน

วิธีแก้ไข

  1. สร้าง SSH key ใน terminal (ถ้ายังไม่มี)
   ssh-keygen -t ed25519 -C "your.email@example.com"
  1. คัดลอก public key
   cat ~/.ssh/id_ed25519.pub
  1. เพิ่ม 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

  1. ติดตั้ง Gittyup (เช่น sudo apt install gittyup หรือผ่าน Flatpak)
  2. เปิดแอป คลิก “โคลนรีโพซิทอรี” หรือ “Clone Repository”
  3. กรอก URL ของรีโพซิทอรี เลือกโฟลเดอร์ปลายทาง แล้วเริ่มดาวน์โหลดได้ทันที

7.3 วิธีโคลนด้วย Visual Studio Code

  1. เปิด VS Code คลิกไอคอน “Source Control” ทางซ้าย
  2. เลือก “Clone Repository” ที่แถบด้านบน
  3. วาง URL ของรีโพซิทอรีแล้วกด Enter เลือกโฟลเดอร์ปลายทางเพื่อเริ่มโคลน
  4. หลังโคลนแล้วสามารถแก้ไขโค้ด 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 อื่นได้