Git: Hướng Dẫn Sử Dụng Kiểm Soát Phiên Bản Cơ Bản

Giới thiệu về Git

Git là một hệ thống kiểm soát phiên bản phân tán mạnh mẽ, cho phép nhiều người cùng làm việc trên cùng một dự án mà không ảnh hưởng đến nhau. Hướng dẫn này sẽ giúp bạn nắm bắt các thao tác cơ bản khi sử dụng Git.

Phần 1: Cài đặt và cấu hình ban đầu

  1. Tải xuống trình khách Git và đăng ký tài khoản GitHub.
  2. Tạo cặp khóa công khai và riêng tư trên máy cục bộ, sau đó dán khóa công khai vào tài khoản GitHub để kiểm tra kết nối.
  3. Luôn sử dụng lệnh pull trước khi push để lấy các thay đổi mới từ máy chủ.
  4. GitHub không cho phép nhân bản chỉ một thư mục trong kho lưu trữ, mà phải nhân bản toàn bộ kho (đuôi .git).
  5. Thêm kho lưu trữ từ xa: git remote add origin [địa chỉ]. Tên origin là tùy chọn.

Phần 2: Các lệnh Git cơ bản

  • add, commit, push - chuỗi lệnh cơ bản để lưu thay đổi.
  • touch - tạo mới một tệp.
  • git remote -v - hiển thị địa chỉ và bí danh của kho lưu trữ từ xa.
  • git remote show origin - hiển thị thông tin chi tiết về kho lưu trữ từ xa.

Phần 3: Thực hành các thao tác cơ bản

<bash>
# Tạo một tệp C++
tao_tap tin.cpp    # Tạo tập tin.cpp
sua tap tin.cpp    # Mở để chỉnh sửa :wq để lưu và thoát
xem tap tin.cpp   # Xem nội dung tệp

# Thêm tệp vào khu vực chờ
git add tap tin.cpp  

# Commit vào kho Git
git commit -m 'Mô tả thay đổi'  

# Xem lịch sử commit
git log  # Thoát bằng q khi xem xong

# Xóa tệp khỏi kho từ xa:
git rm -r --cached */src/*   # Thực thi lệnh, không có --cached sẽ xóa cả tệp cục bộ

git commit -m"Loại bỏ tất cả tệp trong thư mục src khỏi kiểm soát phiên bản"  # Commit

git push origin master   # Đẩy lên nhánh cụ thể trên máy chủ từ xa
</bash>

Phần 4: Cấu hình khóa SSH cho Git

Sử dụng cặp khóa công khai và riêng tư giúp tránh phải nhập tên người dùng và mật khẩu mỗi khi tương tác với kho lưu trữ. Trong môi trường phát triển nhóm, mỗi thành viên có thể sử dụng tài khoản riêng của mình để xác thực và thực hiện các thao tác Git. Cặp khóa được tạo bằng phần mềm SSH trên máy cục bộ, nơi chúng ta lưu giữ khóa riêng tư và tải khóa công khai lên máy chủ. Quá trình đăng nhập sẽ dựa trên việc khớp hai khóa này.

Đối với Windows, khóa riêng tư của Git thường nằm tại C:\Users\Tên người dùng\.ssh và không cần thay đổi đường dẫn mặc định.

Phần 5: Quản lý nhánh (Branch) trong Git

Một trong những đặc điểm nổi bật của Git là khả năng làm việc với nhiều nhánh, có thể được hình dung như một đồ thị hướng. Việc sử dụng nhánh giúp cho nhiều người có thể làm việc song song trên các tính năng khác nhau, sau đó kết hợp lại. Ngay cả với kho lưu trữ của một người, việc sử dụng nhánh cũng rất hữu ích để quản lý các kịch bản phát triển khác nhau.

Tuy nhiên, việc sử dụng nhánh cũng làm tăng độ phức tạp của các thao tác Git, chủ yếu liên quan đến hai lệnh mergerebase. Hai lệnh này có ý nghĩa gì, tài liệu của Git đã giải thích rất rõ:

<bash>
git help merge;
git help rebase;
</bash>

Tôi sẽ tập trung vào các tình huống sử dụng điển hình: rebase ít được sử dụng thường xuyên, chủ yếu khi tạo nhánh mới. merge lại rất phổ biến, đặc biệt trong môi trường nhóm và khi phát hành phiên bản mới. Ví dụ, chúng ta thường cần hợp nhất nhánh develop vào nhánh master. Quá trình này thực hiện bằng cách hợp nhất trên máy cục bộ trước, sau đó đẩy lên máy từ xa để cập nhật kho trung tâm.

Lưu ý: Khi dọn dẹp kho lưu trữ, có thể gặp lỗi:

<bash>
You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
</bash>

Lỗi này xảy ra khi Git phát hiện có một tệp .git khác bên trong thư mục hiện tại. Giải pháp là xóa thư mục .git không cần thiết. Tại sao Git có vẻ "nhớ" mọi thứ? Bí mật nằm ở tệp .git.

Phần 6: Sử dụng tệp .gitignore

Đôi khi, chúng ta tạo ra các tệp tùy chỉnh hoặc thư viện cục bộ như .idea, node_modules, những tệp này không cần được đưa lên kho lưu trữ (cả cục bộ và từ xa). Trong trường hợp này, chúng ta có thể tạo tệp .gitignore và thêm vào:

<bash>
# Ghi chú
.idea
node_modules
.vs_code
# Thêm nữa
</bash>

Sau khi thực hiện, các tệp này sẽ được loại ra khỏi kho lưu trữ và không ảnh hưởng đến dự án.

Phần 7: Các tình huống sử dụng cụ thể

Câu hỏi: Nên tạo một nhánh riêng cho mỗi lỗi (bug) hoặc tính năng (feature) không?

Trả lời: Mặc dù việc tạo quá nhiều nhánh có thể gây khó khăn trong quản lý, nhưng trong môi trường phát triển nhóm, việc tạo nhánh riêng giúp các thành viên không ảnh hưởng đến nhau. Sau khi hoàn thành tính năng, chúng ta có thể xóa nhánh tương ứng.

Tham khảo thêm:

  • Xử lý lỗi khi sử dụng git pull
  • Hướng dẫn từ Liao Xuefeng
  • Cài đặt Git offline

Thẻ: kiểm-soát-versi git phat-trien-phan-mem hop-nh-nhnh

Đăng vào ngày 23 tháng 7 lúc 03:01