2020.12.02

Git là gì?

Bài viết dưới đây sẽ giúp các bạn hiểu Git là gì? Hãy cùng đọc và áp dụng nhé!

 

Đặt vấn đề 

  • Ngày xưa có hai anh chàng lập trình viên may mắn A và B đang cùng nhau hợp tác xây dựng một dự án. Hai anh làm việc với nhau bằng cách mỗi người tự viết code cho chức năng của dự án và gửi cho nhau qua email, fb, zalo… Mỗi người sau khi nhận được code của nhau sẽ tiến hành ráp lại và tiếp tục phát triển. Tuy nhiên vào một ngày nọ, code của A viết bị sai dẫn tới sản phẩm bị lỗi mà trước đó cả hai đều không hề lưu lại do phần mềm quá lớn. Và thế là hai anh phải cùng nhau xây dựng lại tính năng bị lỗi và tiếp tục gửi code cho nhau như mọi khi.
  • Bản thân mình thấy có 2 vấn đề ở đây:
  • Việc mỗi người tự code rồi gửi cho nhau, sau đó ghép lại thì rất bất tiện. Thử tưởng tượng xem dự án có nhiều người, việc ghép code lại rất dễ xảy ra sai sót và mất thời gian. Lúc này chỉ ước là giá như có thể xem được những thay đổi trong dự án từ xa và tiến hành ghép code trực tiếp vào dự án thì tiện lợi biết mấy.
  • Có cách nào không lo mất code hay là revert lại những phần cũ hay không? Thay vì phải viết lại từ đầu khi phần mềm bị lỗi.
  • Với 2 vấn đề trên, Git có thể giúp 2 anh chàng may mắn kia giải quyết vấn đề dễ dàng hơn rất nhiều và Git còn rất nhiều tính năng hữu dụng khác. Mời các bạn xem tiếp phần giới thiệu chi tiết dưới đây.

Vậy đầu tiên Git là gì?

1. Trước khi biết git là gì thì mình cũng nên tìm hiểu source control là gì trước 

Source control là hệ thống lưu trữ mọi thay đổi của source code ví dụ như bạn thêm, xóa, sửa một vài dòng trong source code nó cũng lưu lại hết, hỗ trợ nhiều người làm việc cùng lúc, xem ai thay đổi code chung, xem dòng code này do ai viết, revert các thay đổi, đưa code về version cũ hơn mà không lo mất code. Hầu như công ty to hay nhỏ đều dùng source control để quản lý source code.

2. Git là gì?

Git cũng là 1 dạng source control, là tên gọi của một Hệ thống quản lý phiên bản phân tán (Distributed version control system – DVCS) , trước kia người ta hay dùng Subversion ( SVN) do google hỗ trợ khá là tiện, nhưng trong vòng nhiều năm trở lại đây git đang trở thành 1 xu thế mới, thay thế dần cho SVN, và đang có một cộng đồng người dùng rất lớn.

3. Dùng git trong những trường hợp nào?

Về việc tại sao dùng Git thì qua ví dụ ở đầu bài đã trả lời cho câu hỏi này rồi. Git đáp ứng giải quyết các vấn đề nhức nhối  về quản lý source code và có hàng loạt tính năng hữu ích giúp cho việc phát triển source code nhanh và hiệu quả hơn. 

Cụ thể:

  • Git giúp chúng ta có thể quay lại và xem code của dự án ở bất kỳ thời điểm nào trước đó, miễn là trước đó bạn có lưu lại trạng thái đó nhé. 
  • Lưu lại các thay đổi như thêm, xóa, sửa các file cụ thể từng dòng và từng ký tự. 
  • Truy lùng dấu vết của ai trong team viết ra ở thời gian nào, rất hữu ích cho việc review code. 
  • Mang lại hiệu quả cao khi làm việc nhóm bằng việc phân chia module và phát triển các tính năng riêng biệt trên cách branch khác nhau.
  • Dễ dàng trong việc deploy sản phẩm.
  • Ngoài ra, còn rất nhiều các tính năng ưu việt nữa chờ các bạn khám phá thêm nhé.

 Vậy khi nào thì cần dùng Git việc đó tuỳ vào bạn nhé.

  • Theo ý kiến của mình nếu đã là một lập trình viên thì quanh năm ăn ngủ với code nên việc sử dụng git everywhere đó là một điều tất yếu và cần thiết.
  • Git mang đến cho ta rất nhiều điều tuyệt vời và tiện dụng cho việc phát triển ứng dụng, phần mềm đặc biệt là theo hướng làm việc nhóm. Vậy câu hỏi được đặt ra ở đây là Git có cần thiết khi làm việc một mình không? Theo mình thì Git sinh ra là để quản lý source code nói chung chứ không phải quản lý code của bao nhiêu người viết ra.Bạn hãy tưởng tượng, nếu một ngày nào đó bạn làm việc một mình, tâm trạng đang bấn loạn , lỡ tay xóa một dòng code nào đó dẫn đến error tràn ngập màn hình thì vất vả lắm đấy. Lúc này, Git sẽ là cứu cánh của bạn. Vì vậy dù làm việc nhóm hay một mình thì Git cũng thực sự sẽ giúp ích rất nhiều cho năng suất cũng như hiệu quả công việc của bạn. 

           Git is the best gift for your life.

4. Git có 3 khái niệm quan trọng là

  • Repository: có thể coi nó là 1 dự án, chứa toàn bộ source code, là nơi sẽ ghi lại trạng thái của thư mục và file từ khi bạn khởi tạo đến hiện tại. Nếu repository được lưu trên máy tính của bạn, nó được gọi là local repository, còn nếu nó được lưu ở trên các server chuyên cung cấp dịch vụ về git nó được gọi là remote repository. Hiện nay có một số Git server phổ biến như là Github, GitLab, Bitbucket,…
  • Commit: 1 repository thì chứa rất nhiều commit, commit đó là những lần bạn sửa code, thêm, xóa file, thay đổi code đều được tính là  commit, những commit đó được lưu vào repository.
  • Branch: là cái dùng để phân nhánh và ghi lại luồng của lịch sử phát triển code của dự án. Branch đã phân nhánh sẽ không ảnh hưởng đến các branch khác nên có thể tiến hành nhiều thay đổi đồng thời trong cùng 1 repository.

      5. Một số lệnh cơ bản của Git

             5.1. Khởi tạo Git trong project của bạn

    • Để Git có thể bắt đầu theo dõi quá trình code của bạn như: Thêm mới, sửa đổi, xóa file thì bạn phải khởi tạo git trong project:

                                                                     git init

    • Để sao chép remote repository sẽ thực hiện thao tác gọi là “clone”.

                                                    git clone /path/to/repository 

    • Để xem hết những file đã thay đổi trong quá trình code, ta dùng lệnh:

                                                                 git status 

    • Để add hết các file đã thay đổi vào stage, ta dùng câu lệnh sau:

                                                                 git add

    • Lưu hết các thay đổi của bạn đã add vào stage ở bước trên lên repository ở local ta dùng lệnh sau:

                                             git commit -m “commit message”

    • Khi đã lưu hết các trạng thái của source code, ta đẩy các thay đổi từ repository ở local lên remote repository.

                                           git push <remote_repository> <branch>

            5.2. Làm việc với branch trong Git

    • Ở mục 4 mình có nói branch là một trong những chức năng quan trọng và cực kỳ lợi hại của git trong việc tách các module và chức năng của Repository, hầu như trong mọi dự án của các công ty lớn nhỏ đều dùng đến nó.
    • Hơn nữa, việc tách nhiều branch cho nhiều chức năng khác nhau để thực hiện rồi sau đó tổng hợp vào 1 branch chung bằng việc merge chúng lại với nhau.
    • Để tạo một branch mới trong Git, ta dùng lệnh

                                                   git branch <new_branch>

    • Switch qua branch khác, ta dùng lệnh:

                                                  git checkout <name_branch>

    • List danh sách các branch, ta dùng lệnh:

                                                            git branch -a

    • Để tải xuống nội dung từ remote repository và cập nhật ở local repository, ta dùng lệnh:

                                                               git pull

Ở trên là những lệnh cơ bản mà mình thường xuyên dùng khi thao tác với Git, ngoài ra còn một phần mình chưa đề cập tới nữa là vấn đề về Merge Branchxử lý conflict, các bạn có thể xem thêm tại đây. Do phạm vi của bài viết nên mình không có thời gian nói về phần này, mong các bạn thông cảm nhé.

6.  Kết Luận

Hiện tại Git đang được sử dụng rất nhiều trong môi trường lập trình, để việc quản lý source code trở nên đơn giản và hiệu quả hơn đặc biệt là khi làm việc nhóm.

Dù chưa thực sự đầy đủ nhưng hy vọng bài viết này sẽ phần nào giúp cho các bạn mới bắt đầu hiểu được khái niệm cũng như lợi ích của Git để thuận lợi hơn trong công việc.

7.  Tài liệu tham khảo

https://git-scm.com/doc

https://codelearn.io/