Cách Sử Dụng git clone trên Ubuntu: Hướng Dẫn Toàn Diện Dành Cho Người Mới Bắt Đầu Về Việc Sao Chép Kho Lưu Trữ Git

.## 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. Là một hệ thống kiểm soát phiên bản được sử dụng trên toàn thế giới, Git đóng vai trò quan trọng trong việc chia sẻ và quản lý mã nguồn cho phát triển nhóm và các dự án mã nguồn mở.

Bài viết này giải thích, theo cách thân thiện với người mới bắt đầu, cách sao chép (clone) một kho Git trên Ubuntu, một bản phân phối Linux phổ biến, bằng lệnh git clone.
git clone là một trong những lệnh cơ bản nhất được dùng để sao chép toàn bộ kho lưu trữ từ xa — chẳng hạn các dự án được lưu trữ trên GitHub hoặc GitLab — về môi trường cục bộ của bạn.

Bằng việc nắm vững git clone, người dùng Ubuntu có thể dễ dàng cài đặt các dự án phần mềm mã nguồn mở khác nhau và xây dựng môi trường phát triển riêng.
Ngoài ra, việc tham gia vào các nhóm và cộng đồng sẽ trở nên năng động hơn rất nhiều.

Bài viết cung cấp một cái nhìn tổng quan toàn diện, bao gồm cài đặt Git, cách sử dụng cơ bản của git clone, và cách xử lý các lỗi thường gặp.
Nó hữu ích không chỉ cho những người mới bắt đầu với Git trên Ubuntu, mà còn cho những người muốn tổ chức và củng cố kiến thức hiện có của mình.

目次

2. Các yêu cầu trước và thiết lập môi trường

Để sử dụng git clone trên Ubuntu, Git bản thân nó phải được cài đặt. Ngoài ra, việc cấu hình ban đầu và chuẩn bị xác thực để truy cập các kho lưu trữ từ xa cũng rất quan trọng. Phần này sẽ giải thích quy trình thiết lập từng bước.

2.1 Cài đặt Git

Trên Ubuntu, Git có thể được cài đặt dễ dàng từ các kho lưu trữ chính thức. Mở terminal và thực hiện các lệnh sau theo thứ tự.

sudo apt update
sudo apt install git

Sau khi cài đặt, xác nhận Git đã được cài đặt đúng bằng cách hiển thị thông tin phiên bản.

git --version

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

2.2 Đặt tên người dùng và địa chỉ email của bạn

Git ghi lại ai đã thực hiện thay đổi, khi nào thay đổi và những gì đã thay đổi. Do đó, khi sử dụng Git lần đầu, bạn nên cấu hình tên người dùng và địa chỉ email của mình.

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

Cấu hình này chỉ cần thực hiện một lần và sẽ áp dụng cho mọi thao tác Git. Nếu bạn muốn đặt các giá trị khác nhau cho từng dự án, 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 các 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 được thực hiện bằng một URL, tương tự như trình duyệt web. Trên các nền tảng như GitHub và GitLab, xác thực bằng mật khẩu đã bị loại bỏ, và việc sử dụng Personal Access Tokens (PAT) được khuyến nghị.
  • SSH Xác thực được thực hiện bằng cặp khóa công khai và riêng tư. Phương thức này rất an toàn và loại bỏ nhu cầu nhập mật khẩu mỗi lần, rất phù hợp cho người dùng thường xuyên sử dụng Git.

2.4 Sử dụng Git Credential Manager (Tùy chọn)

Nếu bạn muốn quản lý mật khẩu hoặc token truy cập một cách an toàn và tiện lợi hơn, hãy cân nhắc cài đặt Git Credential Manager (GCM).
GCM lưu trữ thông tin xác thực một cách bảo mật và loại bỏ việc phải nhập lại liên tục. Trên Ubuntu, bạn có thể cài đặt GCM thông qua tài liệu chính thức hoặc các nguồn gói phần mềm.

Đây là các bước chuẩn bị cần thiết để sử dụng git clone trên Ubuntu.
Trong phần tiếp theo, chúng ta sẽ đi vào các bước cơ bản để thực sự sao chép một kho lưu trữ bằng lệnh git clone.

3. Cách sử dụng cơ bản của git clone

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

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

Cách sử dụng đơn giản nhất được thể hiện dưới đây.

git clone <repository URL>

.Ví dụ, khi sao chép một kho công khai được lưu trữ trên GitHub:

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

Khi lệnh này được thực thi, một thư mục mới có tên sample-project sẽ được tạo trong thư mục hiện tại, và toàn bộ nội dung của kho sẽ được tải về trong đó.

3.2 Sao chép qua HTTPS

Sao chép qua HTTPS thường được sử dụng trên nhiều dịch vụ. URL bắt đầu bằng https://. Bạn có thể được yêu cầu nhập thông tin xác thực (tên người dùng và Token Truy cập Cá nhân) trong lần thao tác đầu tiên.

git clone https://github.com/username/repository-name.git

3.3 Sao chép qua SSH

Nếu bạn đã đăng ký khóa SSH, bạn có thể sao chép một cách an toàn mà không cần nhập mật khẩu. Các URL SSH thường sử dụng định dạng git@github.com:.

git clone git@github.com:username/repository-name.git

Để sử dụng sao chép SSH, bạn phải đăng ký khóa công khai của mình với GitHub, GitLab hoặc dịch vụ lưu trữ khác trước.

3.4 Cấu trúc Kho sau khi Sao chép

Khi bạn chạy git clone, tất cả các tệp và thư mục trong kho sẽ được sao chép, cùng với thư mục .git chứa thông tin kiểm soát phiên bản.

  • Thư mục .git Thư mục này lưu trữ lịch sử và cấu hình của kho. Sự tồn tại của nó có nghĩa là tất cả các tệp trong thư mục đều được Git quản lý.
  • Thư mục làm việc Thư mục này chứa mã nguồn và tài liệu của dự án mà bạn tương tác trong quá trình phát triển.

3.5 Cẩn thận với Thư mục Hiện tại

Lệnh git clone tạo một thư mục mới ở vị trí mà nó được thực thi. Bạn nên di chuyển đến thư mục đích mong muốn bằng lệnh cd trước khi chạy lệnh này.

4. Sao chép một Nhánh Cụ thể

Các kho Git thường chứa nhiều nhánh. Mặc định, git clone sao chép nhánh mặc định (như main hoặc master), nhưng có nhiều trường hợp bạn muốn chỉ sao chép một nhánh cụ thể. Phần này giải thích cách thực hiện.

4.1 Sử dụng tùy chọn –branch

Lệnh git clone cung cấp tùy chọn --branch (hoặc -b). Tùy chọn này cho phép bạn sao chép một kho với nhánh được chỉ định đã được checkout.

git clone --branch branch-name repository-URL

Ví dụ, để sao chép nhánh develop:

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

Điều này tạo ra một kho cục bộ với nhánh develop đã được checkout.

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

Mặc định, git clone tải về thông tin cho tất cả các nhánh. Tuy nhiên, khi kết hợp với tùy chọn --single-branch, chỉ nhánh được chỉ định sẽ được lấy về, giảm việc sử dụng đĩa và lưu lượng mạng.

git clone --branch branch-name --single-branch repository-URL

Điều này hữu ích khi bạn chỉ cần một nhánh tính năng cụ thể hoặc khi làm việc với các kho lớn.

4.3 Lấy các Nhánh Khác Sau khi Sao chép

Nếu sau này bạn quyết định cần các nhánh bổ sung, hãy chạy lệnh sau bên trong kho.

git fetch --all

Sau đó chuyển sang nhánh mong muốn bằng:

git checkout branch-name

4.4 Lưu ý Quan trọng

  • Cần xác thực cho các kho riêng tư hoặc có hạn chế.
  • Việc chỉ định tên nhánh không tồn tại sẽ gây lỗi. Bạn nên kiểm tra các tên nhánh có sẵn trên kho từ xa trước.

5. Các Lỗi Thường Gặp và Cách Khắc Phục

Khi sử dụng git clone, có thể xảy ra lỗi do xác thực, kết nối hoặc vấn đề quyền truy cập. Phần này giới thiệu các lỗi thường gặp của người dùng Ubuntu và cách giải quyết.

5.1 Lỗi Xác Thực HTTPS và Sử Dụng Token Truy Cập Cá Nhân

Để nâng cao bảo mật, các nền tảng như GitHub và GitLab đã ngừng hỗ trợ xác thực bằng mật khẩu và hiện yêu cầu Token Truy cập Cá nhân (PAT).
Bạn có thể gặp các lỗi như sau:

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

Trong trường hợp này, tạo một PAT trên GitHub và nhập tên tài khoản GitHub của bạn làm tên người dùng và PAT làm mật khẩu. PAT có thể được tạo từ Cài đặt GitHub → Cài đặt nhà phát triển → Mã thông báo truy cập cá nhân.

5.2 Lỗi Xác thực SSH và Đăng ký Khóa Công khai

Khi clone qua SSH, bạn có thể thấy lỗi Permission denied (publickey). Điều này thường cho thấy rằng khóa SSH chưa được đăng ký đúng cách.

Giải pháp:

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

Điều này giải quyết lỗi xác thực SSH.

5.3 Lỗi Quyền Truy cập Kho Lưu trữ

Khi cố gắng clone một kho lưu trữ riêng tư hoặc thuộc sở hữu tổ chức, bạn có thể thấy các lỗi như sau:

fatal: repository 'https://github.com/username/repository-name.git/' not found

Giải pháp:

  • Xác minh rằng URL kho lưu trữ là chính xác.
  • Xác nhận rằng tài khoản của bạn có quyền truy cập kho lưu trữ.
  • Nhập lại thông tin xác thực nếu cần thiết.

5.4 Lỗi Liên quan đến Mạng

Các 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 gây ra.

Giải pháp:

  • Đảm bảo rằng kết nối internet của bạn đang hoạt động.
  • Kiểm tra cài đặt VPN hoặc proxy nếu áp dụng.
  • Nếu vấn đề do gián đoạn dịch vụ tạm thời, hãy chờ và thử lại sau.

5.5 Các Lỗi Phổ biến Khác

  • Thư mục Đã Tồn tại Việc clone thất bại nếu một thư mục có cùng tên đã tồn tại. Đổi tên thư mục hoặc xóa thư mục hiện có.
  • Không Đủ Không gian Đĩa Đảm bảo có đủ không gian đĩa trống.

Bằng cách xác định nguyên nhân và xử lý từng bước, hầu hết các lỗi có thể được giải quyết thành công.

6. Các Tùy chọn git clone Hữu ích

Lệnh git clone cung cấp nhiều tùy chọn cho phép bạn chỉ lấy dữ liệu cần thiết hoặc clone đúng cách các kho lưu trữ có submodule. Phần này giới thiệu một số tùy chọn được sử dụng phổ biến nhất.

6.1 Tùy chọn –depth (Shallow Clone)

Nếu bạn không cần lịch sử commit đầy đủ và chỉ muốn các commit mới nhất, tùy chọn --depth rất hữu ích.
Nó cho phép bạn giới hạn số lượng commit được lấy.

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

Ví dụ này chỉ lấy commit gần nhất. Nó lý tưởng cho các kho lưu trữ lớn hoặc môi trường CI nơi tốc độ là quan trọng.

6.2 Tùy chọn –single-branch

Theo mặc định, git clone lấy thông tin cho tất cả các nhánh. Sử dụng tùy chọn --single-branch cho phép bạn chỉ clone một nhánh cụ thể.
Nó thường được kết hợp với tùy chọn --branch.

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

6.3 Tùy chọn –recursive (Cloning Submodules)

Các kho lưu trữ Git có thể bao gồm các kho lưu trữ khác dưới dạng submodule. Khi clone các dự án như vậy, sử dụng tùy chọn --recursive.

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

Điều này clone cả kho lưu trữ chính và các submodule của nó. Nếu bạn quên bao gồm --recursive, bạn có thể khởi tạo submodule sau:

git submodule update --init --recursive

6.4 Các Tùy chọn Hữu ích Khác

  • Tùy chọn –origin Sử dụng khi bạn muốn gán tên remote khác với origin mặc định.
  • Chỉ định Tên Thư mục Để chỉ định rõ ràng tên thư mục đích, thêm nó vào cuối lệnh.
    git clone https://github.com/exampleuser/sample-project.git custom-directory-name
    

7. Sử dụng git clone với Công cụ GUI

Nếu bạn không thoải mái với các hoạt động dòng lệnh hoặc thích giao diện trực quan hơn, các công cụ GUI là lựa chọn tuyệt vời. Trên Ubuntu, một số công cụ GUI cho phép bạn dễ dàng thực hiện git clone.

7.1 Các Công cụ GUI Phổ biến

  • Gittyup Một client Git nhẹ và đơn giản, có thể cài đặt qua các kho Ubuntu hoặc Flatpak.
  • Visual Studio Code (VS Code) Trình soạn thảo phổ biến, hỗ trợ các thao tác Git trực quan thông qua các extension.
  • GitKraken Client Git đầy tính năng với giao diện trực quan (miễn phí cho người dùng cá nhân).

7.2 Sao chép (Clone) bằng Gittyup

  1. Cài đặt Gittyup (ví dụ: sudo apt install gittyup hoặc qua Flatpak).
  2. Khởi chạy ứng dụng và nhấn “Clone Repository”.
  3. Nhập URL của kho, chọn thư mục đích, và thực hiện lệnh sao chép.

7.3 Sao chép (Clone) bằng Visual Studio Code

  1. Mở VS Code và nhấn biểu tượng “Source Control” ở phía bên trái.
  2. Chọn “Clone Repository” từ menu trên cùng.
  3. Dán URL của kho, nhấn Enter và chọn thư mục đích.
  4. Sau khi sao chép, bạn có thể ngay lập tức chỉnh sửa mã, commit thay đổi và push cập nhật ngay trong VS Code.

7.4 Ưu điểm và Lưu ý khi dùng công cụ GUI

  • Ưu điểm Không cần nhập lệnh, rất thân thiện với người mới bắt đầu. Các khác biệt và lịch sử dễ dàng hình dung.
  • Lưu ý Các tính năng và giao diện tùy thuộc vào từng công cụ, vì vậy hãy chọn công cụ phù hợp với quy trình làm việc của bạn. Bắt đầu với GUI và dần dần học dòng lệnh sẽ mang lại sự linh hoạt hơn.

8. Tổng kết

Bài viết này cung cấp giải thích chi tiết về cách sử dụng git clone trên Ubuntu, từ các khái niệm cơ bản đến các cách dùng nâng cao.
Nó bao gồm việc cài đặt Git, các phương pháp sao chép qua HTTPS và SSH, làm việc với các nhánh cụ thể, các tùy chọn hữu ích, và quy trình làm việc dựa trên GUI.

git clone là lệnh thiết yếu cho các dự án mã nguồn mở, phát triển nhóm và tự học. Khi bạn thành thạo lệnh này, bạn sẽ có thể làm việc hiệu quả trong nhiều tình huống.

Đối với người mới bắt đầu, cách tiếp cận tốt là tìm kiếm trực tiếp các thông báo lỗi, tham khảo tài liệu chính thức, và dần dần khám phá các tùy chọn nâng cao và công cụ GUI khi bạn tích lũy kinh nghiệm.

Nếu gặp các câu hỏi chưa được đề cập trong bài viết, hãy tham khảo mục FAQ, tài liệu chính thức của GitHub, hoặc các nguồn cộng đồng.
Kết hợp Ubuntu và Git sẽ giúp bạn mở rộng cơ hội phát triển và học tập hơn nữa.

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

Câu hỏi 1: Làm sao cài đặt Git trên Ubuntu?
Trả lời: Chạy các lệnh sau trong terminal:

sudo apt update
sudo apt install git

Câu hỏi 2: Làm sao sao chép chỉ một nhánh cụ thể?
Trả lời: Sử dụng tùy chọn --branch (hoặc -b).
Ví dụ:

git clone --branch branch-name repository-URL

Câu hỏi 3: Khi sao chép qua HTTPS tôi gặp lỗi xác thực. Tôi nên làm gì?
Trả lời: Sử dụng Personal Access Token thay cho mật khẩu. Tạo token trong cài đặt GitHub của bạn và dán vào ô nhập mật khẩu.

Câu hỏi 4: Làm sao tạo và đăng ký khóa SSH?
Trả lời: Tạo khóa SSH bằng lệnh:

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

Câu hỏi 5: Làm sao kiểm tra URL remote của một kho đã sao chép?
Trả lời: Chạy lệnh sau trong thư mục của kho:

git remote -v

Câu hỏi 6: Điều gì sẽ xảy ra nếu đã tồn tại thư mục cùng tên?
Trả lời: git clone sẽ thất bại. Hãy chỉ định tên thư mục khác hoặc xóa thư mục hiện có.

Câu hỏi 7: Làm sao sao chép đúng một kho có submodule?
Trả lời: Sử dụng tùy chọn --recursive:

git clone --recursive repository-URL

Câu hỏi 8: Những công cụ GUI Git nào được khuyên dùng cho Ubuntu?
Trả lời: Gittyup, Visual Studio Code (kèm các extension Git), và GitKraken là những lựa chọn phổ biến.

Câu hỏi 9: Làm sao chuyển sang nhánh khác sau khi đã sao chép?
Trả lời:

git fetch --all
git checkout branch-name