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
- Tải xuống trình khách Git và đăng ký tài khoản GitHub.
- 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.
- Luôn sử dụng lệnh
pulltrước khipushđể lấy các thay đổi mới từ máy chủ. - 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).
- Thêm kho lưu trữ từ xa:
git remote add origin [địa chỉ]. Tênoriginlà 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 merge và rebase. 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