Tìm hiểu về git, vì sao lập trình viên cần git?
Mở đầu
- Chúng ta đã tìm hiểu về cách tổ chức của một project web qua bài viết tổng quan về lập trình web và ứng dụng.
- Hãy thử suy nghĩ, nếu bạn muốn lưu trữ mã nguồn này lại để có thể sử dụng ở bất kì đâu hoặc bạn muốn chia sẻ nó cho các thành viên khác trong nhóm thì phải làm cách nào cho hiệu quả?
- Trong bài viết này, công cụ Git sẽ giúp bạn giải đáp những thắc mắc đó!
Git là gì?
Là một hệ thống quản lý dữ liệu phiên bản phân tán (Distributed Version Control System) giúp lưu trữ và theo dõi các phiên bản mã nguồn của dự án theo thời gian.
Ví dụ minh hoạ
- Có một công việc đó là chỉnh sửa hình ảnh theo yêu cầu của khách hàng.
- Lần thứ nhất, khách hàng yêu cầu bạn phải làm cho tấm hình có thật nhiều màu sắc.
- Lần thứ hai, khách hàng mong muốn rằng một số chi tiết chưa được đẹp cần phải chỉnh sửa thêm.
- Lần thứ ba, khách hàng lại cảm thấy tấm hình nguyên bản là đẹp hơn nên không cần phải chỉnh sửa gì thêm 😄.
- Kết luận nếu bạn không lưu trữ lại các phiên bản trước đó khi sửa hình ảnh thì bạn sẽ phải bắt đầu công việc từ đầu và mất rất nhiều thời gian. Và Git cũng đóng vai trò tương tự như ví dụ nêu trên giúp quản lý các phiên bản của mã nguồn khi làm các tính năng khác nhau!
Một số khái niệm về git
- Nếu bạn muốn làm việc với Git hiệu quả, đầu tiên bạn cần nắm vững về các khái niệm sau:
Repository (Kho lưu trữ)
- Repository là nơi chứa toàn bộ mã nguồn, lịch sử các phiên bản và các nhánh của một dự án.
- Được chia làm 2 phân loại:
- local repository: là kho lưu trữ trên máy tính cá nhân.
- Remote repository: là kho lưu trữ trên máy chủ từ xa (GitHub, GitLab, Bitbucket,...).
- Lập trình viên thường làm việc trên local repository như một bản nháp, sau khi đã cân nhắc kĩ lưỡng thì mới đẩy mã nguồn lên remote repository.
Mỗi dự án có một kho lưu trữ khác nhau.
Commit
- Commit là hành động lưu lại thay đổi của mã nguồn kèm theo mô tả chi tiết.
- Mỗi commit chứa một mã hash duy nhất giúp bạn quản lý các thay đổi của mã nguồn.
# sh
git commit -m "Viết mô tả thay đổi"
Branch (Nhánh)
- Mỗi một Repository sẽ có một branch mặc định được gọi là
main
branch. - Nhánh giúp bạn phát triển tính năng mới mà không ảnh hưởng đến nhánh chính (main/master). Có thể tạo nhiều nhánh và hợp nhất (merge) sau khi hoàn thành.
Pull & Push
- git pull: Lấy và cập nhật mã nguồn từ kho lưu trữ từ xa về kho lưu trữ cá nhân.
- git push: Đẩy mã nguồn từ branch đang làm việc trong kho lữu trữ cá nhân lên branch tương ứng trên kho lưu trữ từ xa.
Clone
- Sao chép toàn bộ mã nguồn trên kho lưu trữ từ xa về kho lưu trữ cá nhân trên máy tính để làm việc.
git clone <URL_repository>
Staging Area
- Staging Area (còn gọi là Index) là một khu vực tạm trong Git dùng để nơi lưu trữ các thay đổi trước khi bạn chính thức commit vào kho lưu trữ cá nhân (local repository).
git add . // thêm toàn bộ các file thay đổi vào staging area.
git commit -m "Thêm tính năng mới" // lưu lại mã nguồn thay đổi trên local repository.
Trong mã nguồn Git sử dụng một tệp đặc biệt (.git/index) để theo dõi những thay đổi đã được "staged"
.gitignore
- File
.gitignore
giúp loại trừ những tệp dư thừa không cần theo dõi, commit lên kho lưu trữ (như thư mục build, file log, v.v.)
Vai trò của git trong dự án thực tế
Quản Lý Phiên Bản (Version Control)
- Giúp theo dõi lịch sử thay đổi của mã nguồn theo thời gian.
- Cho phép quay lại phiên bản trước đó nếu có lỗi.
- Lưu trữ toàn bộ lịch sử thay đổi mà không làm mất dữ liệu cũ.
Làm Việc Nhóm Hiệu Quả
- Tránh được việc xung đột mã nguồn khi nhiều người làm việc trên cùng một dự án.
- Tạo nhánh (branch) để phát triển các tính năng mới mà không ảnh hưởng đến mã nguồn chính.
Hỗ Trợ Làm Việc Từ Xa
- Được kết hợp với các nền tảng như GitHub, GitLab, Bitbucket để đồng bộ mã nguồn trên máy chủ từ xa.
- Các thành viên trong nhóm có thể làm việc từ nhiều nơi khác nhau.
Kiểm Soát và Đánh Giá Mã Nguồn
- Git hỗ trợ Pull Request (PR) / Merge Request (MR) để kiểm tra mã nguồn trước khi gộp vào nhánh chính.
- Cho phép xem lại lịch sử commit để biết ai đã thay đổi những gì và khi nào thay đổi.
- Giúp tìm ra lỗi dễ dàng bằng cách so sánh sự khác biệt giữa các phiên bản.
Kết luận
- Nếu bạn đang có ý định trở thành một lập trình viên thì Git là một công cụ bỏ túi không thể thiếu!
- Muốn đi nhanh thì đi một mình, còn muốn đi xa... thì hãy sử dụng Git để làm việc nhóm một cách hiệu quả 😜.
All rights reserved