Git là một Version Control System (VCS) dạng phân tán phổ biến hàng đầu hiện nay. VCS có thể tạm dịch sang tiếng Việt là “Hệ thống kiểm soát phiên bản” – một hệ thống giúp bạn quản lý nhiều phiên bản khác nhau của một dự án phần mềm.
Git đang được sử dụng bởi một số lượng lớn lập trình viên, các nhóm phát triển ứng dụng, và các công ty phần mềm.
Mặc dù vai trò của Git quan trọng như vậy, rất nhiều bạn học Công nghệ thông tin chưa từng nghe nói về Git! Chỉ đến khi đi thực tập mới bắt đầu được chỉ dẫn sử dụng Git.
Kiểm soát phiên bản (version control) là gì?
Khi làm việc với file / thư mục / dự án mà có khả năng cao mắc sai sót trong quá trình thực hiện, bạn thường phải thực hiện một giải pháp lưu dự phòng nào đó để nếu gặp lỗi bạn sẽ có cái gì đó để khôi phục.
Nhiều trường hợp bạn muốn thử nghiệm thêm một tính năng mới hoặc chỉnh sửa code đang có nhưng không muốn ảnh hưởng đến dự án hiện đang hoạt động tốt.
Một giải pháp đơn giản nhất mà hầu như ai cũng nghĩ tới: sao chép file/thư mục cần lưu dự phòng và đặt thêm các tiền tố / hậu tố thể hiện sự thay đổi.
Hình ảnh chụp các file trong thư mục dưới đây có lẽ rất quen thuộc với bạn.
Cách này nhanh chóng đem đến rắc rối khi bạn rất khó theo dõi thứ tự và sự thay đổi giữa các bản sao này.
Một cách khác là nén các file lại và đặt tên theo mốc thời gian:
Cách này có vẻ ổn hơn nhưng bạn khó theo dõi được nội dung và đặc điểm của mỗi phiên bản.
Một cải tiến nữa là thêm file mô tả lịch sử thay đổi:
Cách này giúp bạn nắm được đại khái những gì thay đổi nhưng không thể lưu lại từng chi tiết (vì quá mất công mô tả trong file lịch sử).
Những công việc bạn thực hiện thủ công như trên có thể xem như dạng thức sơ khai của việc quản lý phiên bản.
Qua mấy ví dụ này bạn hẳn đã thấy, việc quản lý phiên bản thực tế là một yêu cầu rất quan trọng, không chỉ trong dự án phần mềm mà còn cho những công việc khác liên quan đến file và thư mục. Và bạn, dù vô tình hãy hữu ý, cũng đã tự mình “sáng tạo” ra một vài cách để quản lý phiên bản.
Để đạt được hiệu quả tốt nhất trong quản lý phiên bản, bạn cần đến một Hệ thống Kiểm soát Phiên bản – Version Control System (VCS).
VCS giúp quản lý phiên bản dự án bằng cách theo dõi mỗi sự thay đổi (như thêm mới, điều chỉnh, xóa bỏ) trên file của dự án. Qua đó VCS ghi lại từng thay đổi đối với một / một nhóm file và cho phép hoàn tác (đảo ngược) cho mỗi thay đổi đó.
Một trong những ưu thế quan trọng nhất của VCS là hỗ trợ làm việc nhóm. Khi sử dụng VCS, mỗi người làm việc trên một bản sao riêng của dự án (gọi là branch). VCS cho phép gộp thay đổi từ mỗi dự án bản sao lên dự án gốc (gọi là merge) khi có yêu cầu.
Phân loại hệ thống kiểm soát phiên bản
Có rất nhiều loại hệ thống kiểm soát phiên bản khác nhau. Nhìn chung người ta phân biệt ba loại VCS: cục bộ (local), tập trung (centralized), phân tán (distributed).
Hệ thống kiểm soát phiên bản VCS cục bộ
Đây là loại VCS xuất hiện sớm nhất. Các hệ thống VCS cục bộ theo dõi thay đổi trên file sử dụng cơ sở dữ liệu cục bộ. Tất cả hoạt động của hệ thống này gói gọn trên một máy tính.
Một sản phẩm phổ biến thuộc nhóm VCS cục bộ là Source Code Control System (SCCS) do AT&T phát triển từ những năm 1970. Sau đó SCCS được thay thế bởi Revision Control System (RCS) năm 1982.
Hạn chế lớn nhất của VCS cục bộ là không hỗ trợ làm việc nhóm (do bản chất cục bộ của các hệ thống này).
Nhìn chung các hệ thống VCS cục bộ hiện nay không còn phổ biến.
Hệ thống kiểm soát phiên bản VCS tập trung
Các VCS tập trung lưu trữ dữ liệu trên một máy chủ mà các máy khách có thể kết nối tới. Do đặc điểm này, VCS tập trung hỗ trợ tốt làm việc nhóm và theo dõi tiến độ dự án.
Một số sản phẩm thuộc nhóm VCS tập trung bao gồm Concurent Version System (CVS) hay Apache SubVersioN (SVN). Các sản phẩm này vẫn đang rất phổ biến hiện nay.
Hệ thống kiểm soát phiên bản VCS phân tán
Các VCS phân tán dễ hình dung như sự kết hợp giữa VCS cục bộ và VCS tập trung. Trong đó mỗi client lưu một bản sao của dữ liệu thay vì lưu tập trung trên server.
Trong một hệ thống VCS phân tán, mỗi client có thể sao chép (clone) một bộ dữ liệu từ kho lưu trữ (repository) về máy cục bộ để làm việc. Mỗi máy tham gia vào hệ thống cung cấp repository cho các máy khác. Những thay đổi trên từng phiên bản cục bộ có thể trao đổi giữa các repository.
Một số hệ thống VCS phân tán thông dụng hiện nay là BitKeeper SCM phát hành từ năm 2000, và Git – hệ thống VCS mã mở miễn phí phổ biến nhất hiện nay. Git là đối tượng chính của loạt bài này.
Git là gì?
Git hầu như không được nhắc tới trong trường đại học nhưng lại là công cụ không thể thiếu ở các công ty phần mềm.
Git là một hệ thống quản lý phiên bản phân tán do Linus Torvalds – tác giả của hệ điều hành Linux – tạo ra từ 2005 dành cho chính việc phát triển nhân Linux.
Git là giải pháp thay thế cho BitKeeper SCM sau khi hệ thống này chấm dứt cung cấp miễn phí vào năm 2005. Trước đó, Linux được phát triển sử dụng VCS này.
Địa chỉ website chính thức của Git trên Internet là https://git-scm.com.
Với vai trò một VCS, có thể tóm lược những tính năng chính của Git như sau:
- Chuyển qua lại giữa các phiên bản của file;
- Xem lại sự thay đổi giữa các phiên bản;
- Xem lịch sử thay đổi của một file;
- Đánh dấu một phiên bản để nhanh chóng tham chiếu tới;
- Trao đổi các “tập thay đổi” (changeset) giữa các kho lưu trữ;
- Xem lại những thay đổi do client khác thực hiện.
Hai tính năng cuối hướng tới làm việc nhóm.
Git hoạt động trên cả 3 nền tảng lớn Windows, Mac, Linux. Có thể sử dụng Git độc lập (với giao diện dòng lệnh và giao diện đồ họa) hoặc tích hợp với các IDE (môi trường phát triển ứng dụng tích hợp).
Git được hỗ trợ mặc định bởi hầu hết các IDE lớn như Visual Studio / Visual Studio Code, JetBrains (IntelliJ IDEA, PyCharm, PhpStorm, WebStorm, Rider), v.v.
Nhìn chung, dù bạn làm một dự án lớn hay dự án nhỏ, dù làm việc cá nhân hay làm việc nhóm, bạn đều nên sử dụng Git ngay từ đầu.
Việc học sử dụng Git cơ bản khá đơn giản. Chỉ cần nắm một số khái niệm, quy trình, và một vài lệnh Git là đủ. Ngoài ra, các IDE tích hợp Git giúp việc sử dụng VCS này trở nên rất tiện lợi.
Cài đặt Git
Cài đặt Git trên Windows, Mac, và Ubuntu rất đơn giản.
Các file cần thiết cho việc cài đặt git trên cả 3 nền tảng chính (Windows, Mac, Linux/Unix) được cung cấp tại địa chỉ https://git-scm.com/downloads.
Cài đặt Git trên Windows
Bộ cài đặt Git for windows được cung cấp tại địa chỉ https://git-scm.com/download/win
Bạn tải bộ cài về và cài đặt như các chương trình windows bình thường. Khi cài đặt bạn hãy chấp nhận tất cả các lựa chọn mặc định. Sau này nếu cần thay đổi cấu hình gì có thể thực hiện từ giao diện dòng lệnh.
Lưu ý ở bước “Choosing the default editor used by Git” hãy chọn editor nào mình hay sử dụng nhất. Các editor quen thuộc với lập trình viên trên windows như Notepad++, Sublime Text, Atom, Visual Studio Code đều có trong danh sách lựa chọn.
Khi hoàn thành cài đặt bạn sẽ có một chương trình giao diện dòng lệnh Git Bash. Đây là giao diện chính để sử dụng Git (nếu bạn không sử dụng một IDE nào).
* Visual Studio tích hợp sẵn Git client, nghĩa là có thể sử dụng Git từ Visual Studio mà không cần cài đặt riêng Git for Windows. Tuy nhiên nếu muốn sử dụng Git CLI bạn phải cài đặt Git for windows.
** Bạn không nên sử dụng giao diện đồ họa Git khi mới bắt đầu học làm việc với Git. Hãy bắt đầu bằng giao diện CLI (giao diện dòng lệnh). Sau này bạn sẽ dễ dàng học sử dụng Git với IDE quen thuộc.
Cài đặt Git trên máy Mac
Nếu bạn có sử dụng XCode thì Git đã được cài đặt sẵn. Bạn có thể kiểm tra bằng lệnh
$ git --version
Nếu Git chưa được cài, lệnh trên cũng gợi ý cài đặt XCode's Command Line Tools
, trong đó có Git.
Một cách khác là tải bộ cài từ link https://git-scm.com/download/mac và thực hiện cài đặt.
Bạn cũng có thể cài đặt bằng Homebrew với lệnh sau:
$ brew install git
Cài đặt Git cho Linux
Trên Ubuntu (và các distro của Debian) có thể sử dụng lệnh sau:
$ sudo apt-get install git hoặc $ sudo apt install git
Với Fedora có thể dùng yum hoặc dnf:
$ sudo yum install git hoặc $ sudo dnf install git
Nếu sử dụng distro khác có thể tải từ https://git-scm.com/download/linux và xem hướng dẫn cài đặt từ đó.
Cấu hình Git cơ bản
Ngay sau khi cài đặt xong, bạn cần chạy giao diện dòng lệnh của Git để thực hiện một số thông tin cơ bản trước khi sử dụng.
Để cấu hình Git, mở Git Bash (Windows) hoặc terminal (Linux, Mac) và nhập hai lệnh sau:
$ git config --global user.name "Your Name" $ git config --global user.email "your.email@example.com"
Đây là hai lệnh cấu hình thông tin toàn cục (để ý tham số –global) để sử dụng cho tất cả các Git repository trong tương lai (và bạn không cần thiết lập riêng rẽ cho từng repository).
Bạn bắt buộc phải cấu hình user.name và user.email trước khi làm việc với Git.
Nếu bạn muốn thay đổi editor mặc định sử dụng cho Git, bạn có thể sử dụng lệnh sau:
$ git config --global core.editor="nano"
Lệnh này sẽ chỉ định “nano” làm editor mặc định.
Một cách khác để cấu hình Git là chỉnh sửa trực tiếp file cấu hình – vốn chỉ là một file plain text thông thường.
Trên Windows, file cấu hình toàn cục của Git lưu trong file <Ổ hệ thống>:\Users\<Tên user>\.gitconfig
.
Trên Linux và Mac file này là /home/<tên user>/.gitconfig
.
Kết luận
Đây là bài viết đầu tiên trong loạt bài học hướng dẫn sử dụng Hệ quản lý phiên bản phân tán Git – một công cụ không thể thiếu trong phát triển phần mềm hiện nay.
Trong các bài tiếp theo chúng ta sẽ lần lượt đi vào từng chi tiết của VCS này.
+ Nếu bạn thấy site hữu ích, trước khi rời đi hãy giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.
+ Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.
+ Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.
Cảm ơn bạn!
Bài viết rất hay ạ! Mong tác giả sớm ra phần tiếp theo.
Thanks bạn, mình hóng các bài viết tiếp theo của bạn về chủ đề này !