Đối với các dự án phát triển phần mềm lớn nhỏ, việc quản lý mã nguồn theo cách thông thường sẽ mất nhiều thời gian, chi phí và kém hiệu quả. Khi dự án có sự thay đổi, việc phục hồi lại thời điểm cần thiết là khá khó khăn. Do đó cần một phương pháp nào đó có thể khắc phục được các nhược điểm kể trên.
Một trong những phương pháp hiệu quả nhất là sử dụng một hệ thống Version Control System (VCS) mà tiêu biểu là Git. Bài viết sau sẽ giúp làm quen với Git và các command cơ bản của Git.
Git là gì
Git là phần mềm quản lý mã nguồn phân tán được phát triển bởi Linus Torvalds dành cho việc phát triển Linux kernel. Git là phần mềm mã mở được phân phối theo giấy phép công GPL2.
Git có khả năng hoạt động đa nền tảng, có sẵn cho các nền tảng Linux, Windows, Mac OSX, ...
Tại sao nên sử dụng Git
So sánh Git và các phương pháp quản lý dự án thông thường, lẽ dĩ nhiên Git là lựa chọn hoàn hảo. Tuy nhiên Git còn vượt trội hơn một số phần mềm quản lý khác nhờ những ưu điểm sau:
- Dễ sử dụng và an toàn.
- Mô hình phân chia branch (nhánh) giúp cho công việc dễ dàng được chia nhỏ và hoàn thành độc lập.
- Có khả năng làm việc ngoại tuyến. Người sử dụng có thể sao lưu các thay đổi, commit trên kho lưu trữ cục bộ (Local repository) mà không cần đến kết nối Internet. Các thay đổi này sẽ được đưa thủ công lên Remote repository khi Internet hoạt động.
Dĩ nhiên, với khả năng như vậy thì việc làm quen sử dụng Git sẽ phức tạp hơn so với các công cụ khác. Tuy nhiên với lợi ích mà nó mang lại thì việc học cách sử dụng thành thạo Git để áp dụng vào công việc là hoàn toàn xứng đáng.
Cài đặt Git
Truy cập trang web https://git-scm.com/downloads để tải về phiên bản tương thích cho hệ điều hành.
- Git phiên bản 2.27.0 dành cho hệ điều hành Mac OS
- Git phiên bản 2.27.0 dành cho hệ điều hành Windows
- Git phiên bản 2.27.0 dành cho hệ điều hành Linux/Unix
Bài viết sử dụng Git Bash - command line để hướng dẫn các thao tác.
Quy trình làm việc
Quy trình làm việc là rất quan trọng và cần được rèn luyện nhiều nếu muốn thành thạo trong việc sử dụng Git. Quy trình làm việc của Git được biểu diễn bằng sơ đồ sau:
Các thành phần trong quy trình
WORKSPACE
: trạng thái làm việc hiện tại. Các thao tác làm thay đổi mã nguồn, thêm hoặc xoá tài nguyên, ... sẽ được lưu trữ ở đây.INDEX
: trạng thái khi các thay đổi đã được lưu lại (bằng các lệnhadd
).LOCAL REPOSITORY
: sau khi lưu lại, thực hiện thao táccommit
, đưa toàn bộ mã nguồn vào local repository. Mỗi commit sẽ có 1 tag (nhãn) riêng để có thể phục hồi lại bất cứ lúc nào.REMOTE REPOSITORY
: bằng thao tác push, toàn bộ mã nguồn sẽ được đưa lên remote repository và có thể chia sẻ với các thành viên khác trong nhóm thông qua Internet.
Các thao tác
Init
Khởi tạo môi trường làm việc cục bộ. Folder phải hoàn toàn trống trước khi thực hiện lệnh init
. Cú pháp:
git init
Clone
Khi trên remote server đã có sẵn thư mục và các file mã nguồn, lệnh clone
sẽ giúp lấy các thông tin dữ liệu về máy tính cá nhân.
Cú pháp:
git clone /path-to/repository/
Commit
Sau khi thực hiện xong các thay đổi, đưa các thay đổi này vào Index
và sau đó là Local repository. Trước khi commit
, chúng ta sẽ sử dụng lệnh add
để đưa tất cả vào Index
.
Cú pháp:
git add --all git commit -m "Comment"
Lưu ý: Comment
là một chuỗi ký tự đặt trong hai dấu ""
. Comment
có thể được chia thành nhiều dòng, nhưng vẫn đảm bảo nằm giữa hai dấu ""
. Có thể sử dụng bất kỳ chuỗi ký tự nào để đưa vào Comment
, nên đưa vào Comment
cụ thể những thay đổi đã được thêm vào commit
đó. Điều này sẽ giúp việc quản lý được hiệu quả hơn vì dễ dàng nắm được tiến độ của dự án, đồng thời dễ dàng quay lại đúng thời điểm nếu cần thiết.
Push
Sau khi commit
, các thay đổi sẽ được lưu trữ tại Local repository, sử dụng lệnh push
để đưa toàn bộ dữ liệu lên Remote repository. Cú pháp như sau:
git push origin branch_name
Trong đó branch_name
là tên của nhánh làm việc hiện tại.
Pull
Là hành động kéo dữ liệu từ trên Remote repository về máy tính cá nhân. Có thể kéo toàn bộ dữ liệu, hoặc chỉ định một nhánh cụ thể nào đó. Cú pháp:
git pull
Fetch
Khi xảy ra lỗi, nếu muốn trở lại commit
gần nhất để bắt đầu lại công việc, lệnh fetch
sẽ giúp thực hiện điều đó. Cú pháp như sau:
git fetch
Một số thao tác khác
Config
Trong trường hợp khởi tạo một môi trường làm việc mới hoàn toàn ở máy cục bộ, khi đưa các thay đổi lên Remote repository sẽ được yêu cầu khai báo username
và email
. Cú pháp như sau:
git config --global user.name "Your username" git config --global user.email "Your email"
Log
Lệnh git log cho phép xem lại lịch sử các lần commit trước.