Git là một hệ thống quản lý phiên bản phân tán và là hệ thống mã nguồn mở miễn phí. Git được thiết kế để quản lý mọi thứ trong dự án từ nhỏ đến lớn. Sử dụng Git giúp quản lý các phiên bản chỉnh sửa file theo thời gian, có thể khôi phục trạng thái tập tin về một thời điểm trước khi thay đổi. Với dự án đông người hoặc những bài tập làm việc nhóm thì Git là giải pháp tốt nhất giúp ghép nối phần việc của các thành viên với nhau. Cộng đồng sử dụng Git ngày càng tăng và doanh nghiệp tuyển dụng lập trình cũng ưu tiên người biết sử dụng Git.
1. Vấn đề trong công việc thực tế
- Trường hợp bạn làm việc cá nhân:
Ví dụ: 1 file thiết kế ảnh giao diện trang web. Bạn phải làm trong một khoảng thời gian dài mới ra được bản chính thức hoàn thiện. Quá trình sau nhiều ngày làm việc, bạn cảm thấy không hài lòng với thiết kế ở một số chi tiết, bạn muốn quay trở lại trạng thái thiết kế trước đó vài ngày. Vậy bạn sẽ làm thế nào đây khi mà file thiết kế đó đã bị bạn sửa thay đổi quá nhiều?
Bạn sẽ áp dụng giải pháp backup file ra một thư mục trước mỗi lần chỉnh sửa chứ?
Có thể là các file backup sẽ được đánh số hoặc ghi chú kèm theo cho các phiên bản chỉnh sửa. Nhược điểm giải pháp này là mỗi lần chỉnh sửa bạn sẽ phải làm thao tác copy file cẩn thận, đổi tên file chu đáo và đặc biệt là dung lượng các thư mục chứa sẽ tăng lên nhanh chóng gây tốn kém tài nguyên lưu trữ. Ngoài ra khi đi tìm lại các phiên bản bạn có thể khó xác định nhanh bản sao nào là bản cần thiết.
- Trường hợp bạn làm việc theo nhóm:
Ví dụ: Giả sử có 2 người cùng thao tác trên 1 file code:
- Người A viết một số dòng, người B viết một số dòng khác. Hết ngày làm việc 2 người cùng ghép lại tạo thành 1 file.
- Các ngày làm việc tiếp theo họ cũng làm tương tự vậy. Vấn đề khó khăn xảy ra là lúc ghép code có phần người này viết trước, người kia viết sau. Với số lượng 1 file thì có thể dễ dàng phân biệt, nhưng 1 dự án thì có nhiều file nên việc phân biệt vị trí để lắp ghép rất khó khăn và tốn nhiều thời gian.
Không chỉ vậy, nếu dự án có nhiều người cùng tham gia viết code thì độ phức tạp khi lắp ghép sẽ càng cao hơn nhiều và tốn nhiều thời gian hơn nữa.
Đây hoàn toàn là các tình huống thường gặp trong bất kì 1 dự án của công ty hay bài tập nhóm của sinh viên nào. Vấn đề đặt ra là chúng ta cần phải có 1 hệ thống quản lý đủ tốt để giám sát các phiên bản thay đổi của file và giảm thiểu sự phức tạp cũng như thời gian ghép nối file khi làm việc nhóm chung
2. Sơ lược về Hệ thống quản lý phiên bản (Version Control System – VCS)
Là một hệ thống quản lý và lưu trữ những thay đổi của một file theo các mốc thời gian thay đổi của chúng. Bạn có thể sử dụng VCS có thể sử dụng cho công việc quản lý quản lý file bất kỳ.
VD: quản lý file code trong lập trình, file thiết kế đồ họa, file làm việc trong công tác văn phòng….
- Một số chức năng VCS cung cấp:
- Xem các phiên bản thay đổi của file
- Biết được ai là người chỉnh sửa file
- Khôi phục lại trạng thái của file trước khi thay đổi ở một phiên bản nào đó
- Có 3 loại hệ thống quản lý phiên bản:
Quản lý cục bộ (Local Version Control System – VCS)
Hệ thống được cài đặt trên máy tính cá nhân, và chỉ hỗ trợ 1 người làm việc.
- Quản lý tập chung (Centralized Version Control System – CVCS):
Hệ thống lưu trữ file thay đổi sẽ được cài đặt trên 1 máy chủ, các máy cá nhân sẽ kết nối đến để làm việc chung và có thể xem được sự thay đổi của các thành viên khác. Hệ thống này điển hình là SVN (Subversion).
- Quản lý phân tán (Distributed Version Control System – DVCS)
+ Các thay đổi của file được lưu trữ trên server, các máy cá nhân có thể thay đổi tập tin trên server.
+ Tất cả thành viên đều biết phiên bản làm việc của nhau
+ Máy khách sao chép phiên bản mới nhất của các file và sao chép cả dữ liệu phiên bản về máy khách. Ưu điểm của tính năng này là các máy khách có thể làm việc độc lập khi không kết nối được với server vì đã sao chép toàn bộ dữ liệu về máy cá nhân. Khi nào kết nối được với server thì có thể đồng bộ dữ liệu.
Ngày nay hệ thống quản lý phiên bản phân tán được phát triển mạnh mẽ và điển hình là Git và có một số dịch vụ điển hình dựa trên Git là: GitHub, Bitbucket….
3. Git là gì?
Git là một hệ thống quản lý phiên bản phân tán với các đặc tính như ở trên.
Git có sự khác biệt so với các hệ thống quản lý phiên bản khác về cách quản lý version. Với mỗi version git sẽ lưu toàn bộ các file còn hệ thống khác như SVN thì sẽ chỉ lưu version với các file bị chỉnh sửa. Chính vì vậy mà Git cho phép là việc cục bộ trên một máy và không cần tương tác server trong quá trình làm việc, khi nào cần đồng bộ thì mới kết nối đến Server. SVN thì sẽ cần tài nguyên server trong quá trình làm việc.
Trên đây là hình ảnh thể hiện sự khác biệt giữa Git và Subversion. Version 1 thì cả 2 hệ thống đều có 3 file A, B, C. Version 2 thì SVN chỉ có 2 file A và C bị chỉnh sửa nên chỉ có 2 file đó được lưu version. Nhưng với Git thì vẫn lưu cả file B trong version 2. Với các version khác cũng vậy.
Ưu điểm của Git là bạn có thể làm việc không cần kết nối tới máy chủ, và hỗ trợ tốt làm việc nhóm. Ngoài ra xu hướng thị trường tuyển dụng lĩnh vực lập trình cũng rất cần người biết sử dụng Git và cộng đồng người sử dụng Git cũng tăng nhanh.
4. Cài đặt Git-SCM
Để làm quen với Git cơ bản, bạn hãy sử dụng Git-SCM. Bài viết này sẽ hướng dẫn bạn cài đặt và cấu hình cho git-scm trên Window. Các bài viết sau này sẽ hướng dẫn bạn sử dụng công cụ khác.
Bước 1: Bạn vào địa chỉ và chọn tải phiên bản phù hợp với hệ điều hành trên máy tính của bạn (Windows, Linux, MacOS)
Bước 2: Bạn tiến hành cài đặt theo các bước như hướng dẫn trong ảnh.
Tiếp đến sẽ có nhiều bước hỏi, bạn cứ bấm Next liên tục đến khi gặp màn hình dưới đây thì bấm Install để bắt đầu cài đặt.
Cuối cùng bấm Next để hoàn thành cài đặt.
Sau khi cài đặt xong bạn vào Menu Start của hệ điều hành sẽ có các mục
Bước 3: Bạn tiến hành chạy ứng dụng Git Bash như trong ảnh trên sẽ hiển thị cửa sổ lệnh
Trong cửa sổ lệnh bạn nhập lệnh: git –version
5. Cấu hình cơ bản cho Git
Khi bạn mới cài đặt Git, bạn cần thiết lập cấu hình thông tin cá nhân để Git xác định ai là người sẽ tác động chỉnh sửa các file sau này. Thông tin tối thiểu gồm username và email.
Để thiết lập cấu hình nhanh, bạn vào cửa sổ git bash và chạy các lệnh như sau:
git config –global user.name sondt32
git config –global user.email [email protected]
Bạn hãy thay thế sondt32 và [email protected] thành thông tin của bạn.
Để xem kết quả bạn đã thiết lập cấu hình, bạn chạy lệnh sau
git config –list
Kết quả thiết lập cấu hình như dưới đây.
Vậy là bạn đã biết cách thiết lập cấu hình cơ bản cho Git và có thể bắt đầu sử dụng Git được rồi.
- Xem thông tin 1 thuộc tính cấu hình: git config user.name
- Xem hướng dẫn về 1 câu lệnh nào đó của git:
VD: Xem hướng dẫn về câu lệnh config: git help config
Dùng câu lệnh git help … để xem hướng dẫn 1 câu lệnh bất kỳ hoặc cách viết sau: git config –help cũng là để xem lệnh config
Chúc các bạn thành công!