Các dự án phần mềm thường được thực hiện bởi nhiều người trong nhóm. Điều này nảy sinh vấn đề về việc quản lý các phiên bản của dự án. Việc Git ra đời đã giải quyết triệt để vấn đề này. Ngoài ra, Git còn cung cấp nhiều tiện ích thuận lợi cho công việc lập trình. Vậy git là gì?
Git là gì?
Git là một Hệ thống kiểm soát phiên bản phân tán mã nguồn mở . Chúng ta cùng tìm hiểu rõ qua cách lý giải từ ngữ như sau
- Đầu tiên, Git là một hệ thống kiểm soát: Điều này về cơ bản có nghĩa là Git là một trình theo dõi nội dung. Vì vậy, Git có thể được sử dụng để lưu trữ nội dung – nó chủ yếu được sử dụng để lưu trữ mã do các tính năng khác mà nó cung cấp.
- Hệ thống kiểm soát phiên bản : Mã được lưu trữ trong Git tiếp tục thay đổi khi thêm mã. Ngoài ra, nhiều nhà phát triển có thể thêm mã song song. Vì vậy, Hệ thống kiểm soát phiên bản giúp xử lý việc này bằng cách duy trì lịch sử về những thay đổi đã xảy ra. Ngoài ra, Git cung cấp các tính năng như quản lý phiên bản các nhánh (branches) và merges các nhánh.
- Hệ thống kiểm soát phiên bản phân tán : Git có một kho lưu trữ từ xa (remote repository) được lưu trữ trong một máy chủ và một kho lưu trữ cục bộ được lưu trữ trong máy tính của mỗi nhà phát triển. Điều này có nghĩa là mã không chỉ được lưu trữ trong một máy chủ trung tâm, mà bản sao đầy đủ của mã có trong tất cả các máy tính của nhà phát triển. Git là Hệ thống kiểm soát phiên bản phân tán do mã có trong máy tính của mọi nhà phát triển. Vì thế, nó phân tán
Lợi ích của Git trong phát triển phần mềm
Lý thuyết thế là đủ, hãy thử hiểu Git qua một ví dụ thực tế. Đầu tiên, thử tưởng tượng chúng ta muốn bắt đầu tạo một startup tỉ đô. Câu hỏi đặt ra là chúng ta phải làm gì nếu muốn trao đổi code giữa các thành viên? Chắc có lẽ sẽ phải copy qua USB, hoặc copy từng phần code qua zalo, facebook, skype chăng? 😀 Chưa kể đến việc, nếu nhiều người trong team cùng sửa một file thì vấn đề còn lớn hơn nhiều
Còn nữa, sẽ như thế nào nếu ta muốn back lại một trạng thái cũ của một hay nhiều file trong dự án? Hay sẽ thế nào nếu một ông trong team ghét sếp mà delete cả dự án được lưu trữ đi? Thật là ác mộng! Tất cả những phiền phức trên đã làm nảy sinh nhu cầu cho các hệ thống như Git. Điểm qua vài lợi ích của Git như sau:
- Git giúp việc trao đổi code trong team trở nên đơn giản hơn. Mỗi người có thể tự do viết code sau đó git merge với code của người khác mà không lo xung đột.
- Nó giúp việc lưu trữ lịch sử phát triển phần mềm thuận tiện hơn. Tất cả những thay đổi trong dự án sẽ được lưu trữ lại. Bạn có thể dễ dàng truy dấu dòng code này của ông nào viết một cách đơn giản. Hoặc có thể back lại code cũ nếu như yêu cầu của dự án lại thay đổi,..v..v
- Sắp xếp công việc tốt hơn: Bạn chỉ cần quan tâm đến task mình đang làm, mà không cần để ý nhiều đến những task liên quan
- Linh hoạt khi phải làm nhiều task một lúc.
- Thoải mái áp dụng những thứ mới vào dự án. Vì bạn có thể tách biệt những thử nghiệm với luồng chính của dự án.
- …..
Tôi thường nghe về Github, Gitlab. Bọn này có giống git không ta?
Đây là một câu hỏi rất thường gặp với những bạn bắt đầu tiếp xúc với git hay một hệ thống tương tự như git. Đầu tiên, phải khẳng định: Git và Github là hai khái niệm hoàn toàn khác nhau.
GitHub là tên của một công ty cũng cấp dịch vụ máy chủ repository công cộng, mỗi người có thể truy cập vào website trang chủ để tạo tài khoản trên đó và tạo ra kho chứa source của riêng mình khi làm việc. Khi một phần mềm cần nhiều người tham gia phát triển thì chúng ta sẽ cần tới một máy chủ để các thành viên trong dự án có thể tải source code về máy cá nhân của họ cũng như đẩy code từ máy tính cá nhân của họ lên đó.
Khi có một thành viên mới tham gia dự án thì người quản lý dự án chỉ cần đưa cho anh ta địa chỉ URL của Git server và nói anh ta tải về source code từ đó. Ngoài ra khi một lập trình viên A phát triển xong một feature thì anh ta cần đẩy code của mình lên Git server để sau đó các thành viên khác khi update code trên máy cá nhân của họ thì feature của anh A sẽ được thêm vào.
Github được cho ra đời với mục đích cung cấp dịch vụ Git server miễn phí. Ngoài ra trang này cũng cung cấp các giao diện để người dùng có thể dễ dàng theo dõi các sự thay đổi trên trình duyệt mà không cần phải cài phần mềm Git trên máy tính.
Tương tự Github, Chúng ta có Gitlab, Bitbucket,…