Hướng dẫn chi tiết cách sử dụng git clone trên Ubuntu: Từ cài đặt Git đến xử lý lỗi thường gặp

目次

1. Giới thiệu

Trong những năm gần đây, “Git” đã trở thành một công cụ không thể thiếu trong phát triển phần mềm, nghiên cứu và các dự án cá nhân. Đặc biệt, Git – hệ thống quản lý phiên bản được sử dụng rộng rãi trên toàn cầu – đóng vai trò quan trọng trong việc chia sẻ và quản lý mã nguồn cho các dự án phát triển nhóm và mã nguồn mở.

Bài viết này sẽ hướng dẫn chi tiết, dễ hiểu cách sao chép (clone) kho lưu trữ Git trên hệ điều hành Linux phổ biến Ubuntu bằng lệnh “git clone” dành cho người mới bắt đầu.
“git clone” là lệnh cơ bản nhất để sao chép toàn bộ dự án từ kho lưu trữ từ xa (như GitHub hoặc GitLab) về máy tính cá nhân.

Khi người dùng Ubuntu thành thạo “git clone”, việc cài đặt các phần mềm mã nguồn mở hoặc xây dựng môi trường phát triển cá nhân sẽ trở nên mượt mà hơn.
Ngoài ra, việc tham gia vào các nhóm hoặc cộng đồng phát triển cũng sẽ trở nên tích cực hơn.

Bài viết này sẽ trình bày toàn diện từ cách cài đặt Git, sử dụng cơ bản lệnh “git clone”, cho đến cách xử lý các lỗi thường gặp.
Dù bạn là người mới làm quen với Git trên Ubuntu hay đã dùng qua và muốn hệ thống lại kiến thức, nội dung dưới đây đều hữu ích.

2. Điều kiện tiên quyết và thiết lập môi trường

Để sử dụng “git clone” trên Ubuntu, trước tiên bạn cần cài đặt Git. Ngoài ra, bạn cũng cần thiết lập ban đầu và chuẩn bị xác thực để truy cập kho lưu trữ từ xa. Phần này sẽ hướng dẫn từng bước xây dựng môi trường cần thiết.

2.1 Cách cài đặt Git

Trên Ubuntu, bạn có thể dễ dàng cài đặt Git từ kho phần mềm chính thức. Hãy mở Terminal và chạy lần lượt các lệnh sau:

sudo apt update
sudo apt install git

Sau khi cài đặt xong, hãy kiểm tra xem Git đã cài đặt thành công chưa bằng cách hiển thị thông tin phiên bản với lệnh sau:

git --version

Nếu hiện ra thông tin phiên bản, việc cài đặt đã thành công.

2.2 Thiết lập tên người dùng và email

Khi Git ghi lại lịch sử thay đổi file, nó lưu lại thông tin “ai đã làm gì vào lúc nào”. Vì vậy, khi lần đầu sử dụng Git, hãy thiết lập tên người dùng và địa chỉ email của bạn.

git config --global user.name "Tên của bạn"
git config --global user.email "your.email@example.com"

Thiết lập này chỉ cần thực hiện một lần và sẽ áp dụng cho tất cả các thao tác Git sau này. Nếu muốn cài đặt khác cho từng dự án, hãy bỏ --global và chạy lệnh trong thư mục dự án đó.

2.3 Lựa chọn và chuẩn bị phương thức xác thực

Khi truy cập kho lưu trữ từ xa bằng Git, có hai phương thức xác thực chính: “HTTPS” và “SSH”.

  • HTTPS
    Truy cập bằng cách nhập URL, giống như trên trình duyệt. Hiện nay, GitHub/GitLab đã ngừng hỗ trợ đăng nhập bằng mật khẩu, thay vào đó khuyến khích sử dụng “Personal Access Token (PAT)”.
  • SSH
    Xác thực bằng cặp khóa công khai và bí mật. Độ bảo mật cao và sau khi thiết lập, bạn không cần nhập mật khẩu mỗi lần sử dụng. Rất phù hợp cho những ai thường xuyên làm việc với Git.

2.4 Sử dụng Git Credential Manager (GCM) (nếu cần)

Nếu bạn muốn quản lý mật khẩu hoặc token truy cập an toàn và tiện lợi hơn, hãy cân nhắc cài đặt Git Credential Manager (GCM).
GCM cho phép lưu trữ thông tin xác thực an toàn, tiết kiệm thời gian nhập lại mỗi lần. Trên Ubuntu, bạn có thể cài đặt theo tài liệu chính thức hoặc qua package manager.

Sau các bước trên, bạn đã sẵn sàng sử dụng “git clone” trên Ubuntu.
Phần tiếp theo sẽ hướng dẫn các bước clone kho lưu trữ bằng lệnh này.

侍エンジニア塾

3. Cách sử dụng cơ bản lệnh git clone

Lệnh “git clone” là lệnh cơ bản để sao chép toàn bộ nội dung của kho lưu trữ từ xa về máy tính cá nhân. Khi muốn sử dụng dự án của người khác trong phát triển nhóm hay mã nguồn mở, thao tác đầu tiên luôn là “git clone”.

3.1 Cú pháp lệnh cơ bản

Cách sử dụng đơn giản nhất như sau:

git clone <URL kho lưu trữ>

Ví dụ, để clone một kho lưu trữ công khai trên GitHub:

git clone https://github.com/exampleuser/sample-project.git

Khi chạy lệnh này, một thư mục mới tên là “sample-project” sẽ được tạo ra trong thư mục hiện tại và toàn bộ nội dung kho lưu trữ sẽ được tải về.

3.2 Cách clone qua HTTPS

Hầu hết các dịch vụ đều hỗ trợ clone qua HTTPS. URL thường bắt đầu bằng “https://”. Khi clone lần đầu, bạn có thể cần nhập thông tin xác thực (tên người dùng, Personal Access Token, v.v.).

git clone https://github.com/tên-người-dùng/tên-kho-lưu-trữ.git

3.3 Cách clone qua SSH

Nếu bạn đã đăng ký SSH key, bạn có thể clone an toàn mà không cần nhập mật khẩu. URL SSH thường có dạng “git@github.com:…”.

git clone git@github.com:tên-người-dùng/tên-kho-lưu-trữ.git

Để sử dụng phương thức này, bạn cần thêm khóa công khai SSH lên GitHub/GitLab trước đó.

3.4 Cấu trúc kho lưu trữ sau khi clone

Sau khi thực hiện “git clone”, ngoài các file và thư mục của dự án, còn có thư mục “.git” chứa thông tin quản lý phiên bản.

  • Thư mục .git
    Lưu trữ lịch sử, cấu hình của kho lưu trữ. Có thư mục này, tất cả các file bên trong sẽ được Git quản lý.
  • Thư mục làm việc
    Chứa mã nguồn, tài liệu, và các file bạn thường làm việc.

3.5 Lưu ý về thư mục hiện tại khi clone

Lệnh “git clone” sẽ tạo thư mục mới trong thư mục hiện tại. Hãy di chuyển đến thư mục bạn muốn lưu trữ dự án (bằng lệnh cd) trước khi thực hiện clone.

4. Cách clone một nhánh cụ thể

Một kho lưu trữ Git có thể có nhiều nhánh. Mặc định, lệnh “git clone” sẽ lấy nhánh chính (main/master). Tuy nhiên, đôi khi bạn chỉ muốn lấy một nhánh cụ thể. Phần này sẽ hướng dẫn cách chỉ định nhánh khi clone.

4.1 Sử dụng tuỳ chọn –branch

Lệnh “git clone” hỗ trợ tuỳ chọn --branch (hoặc viết tắt -b). Dùng tuỳ chọn này, bạn có thể chỉ định nhánh cần clone.

git clone --branch tên-nhánh URL-kho-lưu-trữ

Ví dụ, muốn clone nhánh “develop”:

git clone --branch develop https://github.com/exampleuser/sample-project.git

Lệnh này sẽ tạo kho lưu trữ cục bộ với nhánh “develop” đã được checkout.

4.2 Kết hợp với tuỳ chọn –single-branch

Mặc định, git clone sẽ tải toàn bộ thông tin các nhánh. Nếu muốn chỉ lấy một nhánh cụ thể, hãy dùng thêm tuỳ chọn “–single-branch” để tiết kiệm dung lượng và băng thông.

git clone --branch tên-nhánh --single-branch URL-kho-lưu-trữ

Cách này rất tiện khi bạn chỉ muốn kiểm tra một nhánh chức năng hoặc khi làm việc với các kho lưu trữ lớn.

4.3 Lấy thêm các nhánh khác sau khi clone

Nếu sau này muốn lấy thêm các nhánh khác, hãy chạy lệnh sau trong thư mục kho lưu trữ:

git fetch --all

Để chuyển sang nhánh bất kỳ:

git checkout tên-nhánh

Và nhập tên nhánh bạn muốn chuyển đến.

4.4 Lưu ý

  • Với kho lưu trữ private hoặc hạn chế quyền, bạn cần xác thực khi clone.
  • Nếu chỉ định nhánh không tồn tại sẽ báo lỗi. Hãy kiểm tra tên nhánh trên kho lưu trữ trước.

Nhờ các tuỳ chọn linh hoạt của “git clone”, bạn có thể làm việc hiệu quả ngay cả khi chỉ cần một nhánh cụ thể.

5. Các lỗi thường gặp và cách xử lý

Khi sử dụng “git clone”, có thể xảy ra nhiều lỗi liên quan đến xác thực, kết nối hoặc quyền truy cập. Dưới đây là các lỗi phổ biến và cách xử lý cho người dùng Ubuntu.

5.1 Lỗi xác thực HTTPS và sử dụng Personal Access Token (PAT)

Gần đây, GitHub/GitLab đã bỏ xác thực bằng mật khẩu để tăng bảo mật, yêu cầu dùng Personal Access Token (PAT).
Khi clone, có thể gặp lỗi như sau:

remote: Support for password authentication was removed...
fatal: Authentication failed for 'https://github.com/...'

Hãy tạo PAT trên GitHub (Settings > Developer settings > Personal access tokens), sau đó dùng tên tài khoản làm username và PAT làm password khi được hỏi.

5.2 Lỗi xác thực SSH và đăng ký khóa công khai

Khi clone qua SSH mà gặp lỗi “Permission denied (publickey)”, nguyên nhân là khóa SSH chưa được đăng ký chính xác.

Cách xử lý:

  1. Tạo SSH key (nếu chưa có):
   ssh-keygen -t ed25519 -C "your.email@example.com"
  1. Sao chép nội dung khóa công khai:
   cat ~/.ssh/id_ed25519.pub
  1. Thêm khóa này vào phần cài đặt của GitHub/GitLab.

Sau đó, lỗi xác thực SSH sẽ được giải quyết.

5.3 Lỗi quyền truy cập kho lưu trữ

Khi cố gắng clone kho private hoặc kho của tổ chức, có thể gặp lỗi:

fatal: repository 'https://github.com/tên-người-dùng/tên-kho-lưu-trữ.git/' not found

Cách xử lý:

  • Kiểm tra lại URL của kho lưu trữ.
  • Đảm bảo tài khoản của bạn có quyền truy cập.
  • Nhập lại thông tin xác thực nếu cần.

5.4 Lỗi liên quan đến mạng

Lỗi như “Connection timed out” hoặc “Could not resolve host” thường do kết nối internet hoặc cài đặt proxy.

Cách xử lý:

  • Kiểm tra kết nối internet.
  • Xem lại cấu hình VPN hoặc proxy nếu đang sử dụng.
  • Nếu GitHub gặp sự cố tạm thời, hãy đợi rồi thử lại sau.

5.5 Các lỗi phổ biến khác

  • Thư mục đã tồn tại
    Nếu thư mục cùng tên đã có, sẽ không clone được. Đổi tên thư mục hoặc xóa thư mục cũ trước khi clone.
  • Thiếu dung lượng ổ đĩa
    Hãy đảm bảo ổ đĩa còn đủ chỗ trống.

Khi gặp lỗi, hãy bình tĩnh kiểm tra từng nguyên nhân để khắc phục.

6. Các tuỳ chọn hữu ích của git clone

Lệnh “git clone” có nhiều tuỳ chọn giúp bạn chỉ lấy dữ liệu cần thiết, hoặc clone chính xác các kho có submodule. Dưới đây là các tuỳ chọn thường dùng nhất.

6.1 Tuỳ chọn –depth (clone nông)

Nếu không cần toàn bộ lịch sử mà chỉ muốn lấy phần mới nhất, hãy dùng tuỳ chọn “–depth”.
Số lượng commit lấy về sẽ bằng giá trị chỉ định.

git clone --depth 1 https://github.com/exampleuser/sample-project.git

Lệnh trên sẽ chỉ lấy về commit mới nhất. Rất thích hợp khi clone các kho lớn hoặc trong môi trường CI.

6.2 Tuỳ chọn –single-branch

Mặc định, git clone lấy toàn bộ thông tin các nhánh. Khi dùng “–single-branch”, chỉ một nhánh được clone.
Thường kết hợp với tuỳ chọn “–branch”.

git clone --branch develop --single-branch https://github.com/exampleuser/sample-project.git

Rất hữu ích khi chỉ muốn clone một nhánh cần thiết.

6.3 Tuỳ chọn –recursive (lấy luôn submodule)

Khi kho lưu trữ có các submodule, hãy dùng “–recursive” để clone đồng thời tất cả.

git clone --recursive https://github.com/exampleuser/sample-project.git

Nếu lỡ quên tuỳ chọn này, hãy chạy lệnh sau để lấy submodule sau khi đã clone:

git submodule update --init --recursive

 

6.4 Các tuỳ chọn tiện lợi khác

  • Tuỳ chọn –origin
    Dùng khi muốn đặt tên remote khác mặc định (origin).
  • Chỉ định tên thư mục lưu trữ
    Nếu muốn đặt tên thư mục khác khi clone, hãy thêm tên đó cuối lệnh.
  git clone https://github.com/exampleuser/sample-project.git tên-thư-mục-tùy-chọn

Kết hợp các tuỳ chọn trên, bạn sẽ tận dụng được tối đa sức mạnh của “git clone”.

7. Sử dụng công cụ GUI để clone git

Nếu bạn không quen dùng dòng lệnh hoặc muốn thao tác trực quan hơn, hãy thử các công cụ GUI (giao diện đồ hoạ). Trên Ubuntu, có nhiều công cụ hỗ trợ clone kho lưu trữ Git rất dễ dàng.

7.1 Một số công cụ GUI phổ biến

  • Gittyup
    Một client Git nhẹ, đơn giản, có thể cài đặt qua kho phần mềm Ubuntu hoặc Flatpak.
  • Visual Studio Code (VS Code)
    Trình soạn thảo mã nguồn nổi tiếng, hỗ trợ Git trực quan qua extension.
  • GitKraken
    Giao diện đẹp, nhiều tính năng mạnh mẽ (miễn phí cho cá nhân).

7.2 Cách clone bằng Gittyup

  1. Cài đặt Gittyup (ví dụ: sudo apt install gittyup hoặc qua Flatpak).
  2. Mở ứng dụng, nhấn nút “Clone Repository” hoặc “Sao chép kho lưu trữ”.
  3. Nhập URL kho lưu trữ, chọn thư mục lưu, nhấn xác nhận để tải về.

7.3 Cách clone bằng Visual Studio Code

  1. Mở VS Code, nhấn vào biểu tượng “Quản lý nguồn” bên trái.
  2. Chọn nút “Clone Repository” hoặc “Sao chép kho lưu trữ”.
  3. Dán URL kho lưu trữ, chọn nơi lưu trữ và xác nhận để bắt đầu clone.
  4. Sau khi clone xong, bạn có thể chỉnh sửa code, commit, push trực tiếp trong VS Code.

7.4 Ưu điểm và lưu ý khi dùng GUI

  • Ưu điểm
    Không cần nhập lệnh, thao tác trực quan, dễ nắm bắt sự thay đổi của file/lịch sử, rất phù hợp cho người mới.
  • Lưu ý
    Mỗi công cụ có giao diện và chức năng riêng, hãy chọn loại phù hợp với nhu cầu. Ban đầu hãy làm quen với GUI, sau đó dần tiếp cận dòng lệnh để tăng hiệu quả công việc.

Kết hợp giữa công cụ GUI và dòng lệnh sẽ giúp bạn chủ động và tối ưu hóa hiệu suất khi làm việc với Git trên Ubuntu.

8. Tổng kết

Bài viết đã trình bày chi tiết từ cơ bản đến nâng cao về cách sử dụng “git clone” trên Ubuntu.
Từ cách cài đặt Git, clone qua HTTPS/SSH, clone nhánh hoặc các tuỳ chọn nâng cao, cho đến sử dụng công cụ GUI, tất cả đều được giải thích theo trình tự logic.

“git clone” là lệnh rất hữu ích trong nhiều trường hợp như cài đặt phần mềm mã nguồn mở, phát triển nhóm hoặc tự học. Khi nắm vững lệnh này, bạn sẽ dễ dàng phát triển kỹ năng và làm việc hiệu quả hơn.

Đặc biệt, người mới nên tập thói quen tra cứu lỗi, tham khảo tài liệu chính thức, thử sử dụng các tuỳ chọn và công cụ GUI để nâng cao kỹ năng.

Nếu còn vấn đề chưa giải đáp, hãy tra cứu FAQ, tài liệu GitHub hoặc hỏi cộng đồng.
Hy vọng bạn sẽ tận dụng tối đa Ubuntu và Git để phát triển, học tập tốt hơn.

9. FAQ (Các câu hỏi thường gặp)

Q1: Làm thế nào để cài đặt Git trên Ubuntu?
A1: Hãy mở Terminal và chạy lần lượt các lệnh sau:

sudo apt update
sudo apt install git

Sau khi cài xong, kiểm tra phiên bản bằng lệnh git --version.

Q2: Làm sao để chỉ clone một nhánh cụ thể với git clone?
A2: Sử dụng tuỳ chọn --branch (hoặc -b) và chỉ định tên nhánh.
Ví dụ:

git clone --branch tên-nhánh URL-kho-lưu-trữ

Kết hợp với --single-branch nếu chỉ muốn lấy đúng nhánh đó.

Q3: Bị lỗi xác thực khi clone qua HTTPS, phải làm gì?
A3: GitHub/GitLab yêu cầu dùng Personal Access Token (PAT) thay cho mật khẩu. Hãy tạo PAT trên GitHub và nhập vào ô password khi được hỏi.

Q4: Cách tạo và đăng ký SSH key?
A4: Tạo key với lệnh sau:

ssh-keygen -t ed25519 -C "your.email@example.com"

Sao chép nội dung file ~/.ssh/id_ed25519.pub và thêm vào phần cài đặt tài khoản GitHub/GitLab.

Q5: Làm thế nào để kiểm tra URL remote của kho lưu trữ đã clone?
A5: Trong thư mục dự án, chạy lệnh:

git remote -v

Kết quả sẽ hiển thị các URL remote.

Q6: Nếu đã có thư mục trùng tên thì sẽ thế nào?
A6: Nếu thư mục lưu trữ đã tồn tại, git clone sẽ báo lỗi. Hãy đổi tên hoặc xoá thư mục cũ rồi thử lại.

Q7: Cách clone kho lưu trữ có submodule?
A7: Thêm tuỳ chọn --recursive khi clone.

git clone --recursive URL-kho-lưu-trữ

Nếu đã clone rồi thì chạy tiếp:

git submodule update --init --recursive

Q8: Công cụ GUI Git nào nên dùng trên Ubuntu?
A8: Gittyup, Visual Studio Code (hỗ trợ Git qua extension), GitKraken,… là các lựa chọn phổ biến. Hãy chọn công cụ phù hợp nhu cầu.

Q9: Sau khi clone, muốn chuyển sang nhánh khác thì làm sao?
A9:

git fetch --all
git checkout tên-nhánh

Sử dụng hai lệnh trên để chuyển sang các nhánh khác.