GIT là gì?

11 tháng 12, 2020 By DEVERA ACADEMY

Bạn đang muốn gia nhập ngành lập trình? Vậy thì sau khi học code, bạn hãy tìm hiểu về Git và đây là lý do tại sao.

                                  1. Lịch sử của Git

                                  Git được tạo ra bởi Linus Torvalds khi ông đang phát triển Linux Kernel. Điều đó xảy ra khi BitKeeper, cơ quan kiểm soát phiên bản của Cộng đồng Linux trước đây ngừng cho phép người dùng sử dụng miễn phí dịch vụ. Vào thời điểm đó, cộng đồng này cảm thấy rằng họ cần một hệ thống kiểm soát phiên bản mới. Sau đó Linus đã “nghỉ việc” một tuần để viết Git. Anh ấy đã viết Git bằng cách thu thập các ưu điểm từ BitKeeper và thêm vào một số cải tiến khác.


                                  2. Git là gì?


                                  Nói một cách ngắn gọn, Git là hệ thống kiểm soát phiên bản phân tán mã nguồn mở (Open Source Distributed Version Control System). Nó là một công cụ miễn phí giúp các developer có thể theo dõi và làm việc cùng lúc với bất kỳ ai, từ bất kỳ nơi đâu.

                                  Quản lý phiên bản phân tán


                                  Đúng như tên gọi của nó, version control là một công cụ để các developer theo dõi các phiên bản code đã viết. Các developer có thể theo dõi và quản lý tiến trình mã nguồn (source code) của họ bằng tính năng version control này; vì vậy, nếu có vấn đề gì xảy ra, họ có thể xem lại hoặc thậm chí quay trở về phiên bản trước. Phân tán (distributed) nghĩa là bản thân mã nguồn có thể ở khắp mọi nơi, bất kỳ developer nào trong một nhóm đều có thể tải về hoặc đăng đoạn code của họ lên sau khi đã hoàn thành công việc.

                                  Làm việc đồng thời



                                  Khi làm việc chung trong dự án với nhiều người, chúng ta sẽ phải chờ một số thành viên hoàn thành công việc của họ trước khi chúng ta có thể tải xuống đoạn code đó để tiếp tục công việc của mình. Dạng quy trình này sẽ khiến dự án tốn thêm nhiều thời gian hơn để hoàn thành và cũng dễ xảy ra lỗi hơn, vì các thành viên trong team có thể vô tình xóa hoặc thay thế đoạn code hiện có.
                                   
                                  Sử dụng Git có thể giúp khắc phục nhược điểm của quy trình này. Một Team chỉ cần xác định và thực hiện nhiệm vụ cá nhân của họ, sau đó tải xuống phiên bản code hiện tại và upload nó lên sau khi họ hoàn thành công việc trong thư mục của họ. Sau khi tải code lên, người đó có thể yêu cầu hợp nhất phiên bản code của họ vào thư mục chính nơi tất cả mọi người có thể xem lại các thay đổi một cách rõ ràng.

                                  Miễn phí


                                  Bởi vì Git là một phần mềm mã nguồn mở (Open Source Software), vì vậy tất cả mọi người đều có thể sử dụng mà không tốn một đồng nào.

                                  3. Các tính năng của Git


                                  Dưới đây là một số tính năng cơ bản mà bạn cần biết về Git

                                  Lưu trữ (Repository)


                                  Git với dữ liệu của nó được lưu trữ bên trong một Kho lưu trữ (Repository). Kho lưu trữ này có thể được ví như là một thư mục chứa các mã code của bạn. Repository này sẽ được lưu trữ trên một máy chủ. Một số dịch vụ phổ biến để lưu trữ Git Repository là Github, Gitlab và Bitbucket.

                                  Nhánh (Branch)



                                  Git sử dụng cấu trúc dạng cây (tree structure) cho dữ liệu. Khi chúng ta tải dữ liệu của mình lên máy chủ, nó sẽ được lưu trữ bên trong nhánh chính (master branch) của cây trên kho lưu trữ cụ thể đó. Nói cách khác, nhánh là thư mục con của kho lưu trữ của chúng ta.
                                   

                                  Commit Hash

                                  Đây là tính năng chính giúp Git có thể theo dõi các thay đổi trong dữ liệu. Khi hoàn tất đoạn code, chúng ta cần đánh dấu rằng đã hoàn tất các thay đổi bằng việc thêm một commit, trước khi đẩy các thay đổi lên một nhánh mục tiêu (target branch). Commit của Git lúc này sẽ được tạo thành một Hash text chứa một số dữ liệu, bao gồm:

                                  Content: Tất cả các thay đổi mã code sẽ được thêm vào dữ liệu commit hash.
                                  Commit date: Tên và email của người sử dụng mã.
                                  Message: để đảm bảo rằng các thành viên khác hiểu được những gì một người đã làm trên mã code, commit message cũng được thêm vào giá trị hash.
                                  Previous commit hash value: Đây là cách Git có thể theo dõi và duy trì mã code. Mọi commit đều định danh theo commit trước đó để người dùng có thể dễ dàng tìm thấy điều kiện trước đó của mã code.

                                  Push và Pull

                                  Cả hai thuật ngữ này đều liên quan đến tính năng tải lên và tải xuống trong Git. Bạn không cần phải bối rối khi nghe một developer nói: “Tôi đã push công việc của mình” hoặc “Tôi cần pull phiên bản mới nhất từ ​​nhánh tính năng”.

                                  Pull request

                                  Sau khi push các thay đổi của bạn vào một nhánh nhất định trên git repository, bạn cần yêu cầu đồng đội của mình tham gia hoặc hợp nhất các thay đổi. Quá trình này được xử lý bên trong tính năng Pull Request. Sử dụng pull request sẽ thông báo cho đồng đội của bạn về những hành động bạn đã thực hiện, từ đoạn mã code trước đó và đoạn mã code mới đã được sửa đổi.

                                  4. Mẹo sử dụng Git




                                  Sử dụng Git đúng cách sẽ giúp cải thiện quy trình phát triển phần mềm một cách hiệu quả. Sẽ không có cách sử dụng Git chính xác hoàn toàn mà chúng ta chỉ có thể tự cải thiện cách sử dụng theo thời gian qua kinh nghiệm làm việc cùng Git. Dưới đây là 2 mẹo dùng Git phù hợp với những người mới làm quen với lập trình.

                                  Cung cấp commit message rõ ràng

                                  Nếu bạn quyết định sử dụng Git, thì chắc hẳn bạn đang không làm việc một mình. Để đảm bảo rằng người khác hiểu bạn làm gì, bạn cần đưa ra commit message thật rõ ràng. Bạn có thể làm theo kiểu commit message như sau: https://karma-runner.github.io/2.0/dev/git-commit-msg.html. Hoặc nếu bạn muốn tạo tiêu chuẩn riêng, bạn có thể thảo luận để thống nhất tiêu chuẩn này với đồng đội của mình.

                                  Tạo và quyết định Git Flow

                                  Đây là chủ đề nâng cao vì quyết định về git flow tốt nhất cho dự án của một nhóm thật sự là nhiệm vụ khó khăn. Git flow là cách bạn sử dụng nhánh và các chức năng git khác để giúp phát triển, sửa lỗi và triển khai tốt hơn. Nhưng nếu bạn là người mới bắt đầu, lời khuyên là bạn nên tham khảo Gitflow này:
                                  https://datasift.github.io/gitflow/IntroductioningGitFlow.html
                                   
                                  Thông tin trên cũng là lời kết cho câu chuyện ngắn gọn về Git trong bài viết này. Hy vọng bài viết đã giúp bạn tìm hiểu các khái niệm cơ bản về Git và từ đó có thể tận dụng nó tốt hơn. Happy coding!

                                  Theo tác giả: Ridho Perdana
                                  Dịch bởi Devera Academy