Cafedev tiếp tục chia sẻ thêm cho ace một series mới về Git. Nó sẽ cung cấp các khái niệm cơ bản và nâng cao về Git và GitHub. Series tự học Git của chúng ta được thiết kế cho người mới bắt đầu và các chuyên gia.

Git là hệ thống điều khiển phiên bản phân tán hiện đại và được sử dụng rộng rãi trên thế giới. Nó được phát triển để quản lý các dự án với tốc độ và hiệu quả cao. Hệ thống kiểm soát phiên bản cho phép chúng ta giám sát và làm việc cùng với các thành viên trong nhóm của chúng ta tại cùng một không gian làm việc.

Hướng dẫn này sẽ giúp bạn hiểu hệ thống điều khiển phiên bản phân tán Git thông qua dòng lệnh cũng như với GitHub. Các ví dụ trong hướng dẫn này được thực hiện trên Windows , nhưng chúng ta cũng có thể thực hiện các thao tác tương tự trên các hệ điều hành khác như Linux (Ubuntu)MacOS.

1. Git là gì?

Git là một hệ thống kiểm soát phiên bản phân tán code nguồn mở. Nó được thiết kế để xử lý các dự án từ nhỏ đến lớn với tốc độ và hiệu quả cao. Nó được phát triển để điều phối công việc giữa các developer. Kiểm soát phiên bản cho phép chúng ta theo dõi và làm việc cùng với các thành viên trong nhóm của chúng ta tại cùng một không gian làm việc.

Git là nền tảng của nhiều dịch vụ như GitHubGitLab , nhưng chúng ta có thể sử dụng Git mà không cần sử dụng bất kỳ dịch vụ Git nào khác. Git có thể được sử dụng riêng tưcông khai .

Git được Linus Torvalds tạo ra vào năm 2005 để phát triển Nhân Linux. Nó cũng được sử dụng như một công cụ kiểm soát phiên bản phân tán quan trọng cho DevOps .

Git rất dễ học và có hiệu suất cao trong công việc. Nó vượt trội hơn các công cụ SCM khác như Subversion, CVS, Perforce và ClearCase.

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

Một số tính năng đáng chú ý của Git như sau:

  • Mã nguồn mở(Open Source)
    Git là một công cụ mã nguồn mở . Nó được phát hành theo giấy phép GPL (General Public License).
  • Scalable
    Git có khả năng mở rộng , có nghĩa là khi số lượng người dùng tăng lên, Git có thể dễ dàng xử lý các tình huống như vậy.
  • Phân tán(Distributed)
    Một trong những tính năng tuyệt vời của Git là nó được phân phối . Phân tán có nghĩa là thay vì chuyển dự án sang một máy khác, chúng ta có thể tạo một “bản sao” của toàn bộ kho lưu trữ. Ngoài ra, thay vì chỉ có một kho lưu trữ trung tâm mà bạn gửi các thay đổi đến, mọi người dùng đều có kho lưu trữ của riêng họ chứa toàn bộ lịch sử commit của dự án. Chúng ta không cần kết nối với kho lưu trữ từ xa; thay đổi chỉ được lưu trữ trên kho lưu trữ cục bộ của chúng ta. Nếu cần, chúng ta có thể đẩy những thay đổi này vào kho lưu trữ từ xa.
Mỗi tài khoản(user1, user2, user3…) đều lấy dữ liệu(fetch data) từ Origin, họ có thể chỉnh sửa dữ liệu đó và đẩy lên lại Origin cũng như chia sẽ các dữ liệu đó với các user khác.
  • Bảo mật(Security)
    Git bảo mật là an toàn. Nó sử dụng SHA1 (Secure Hash Function) để đặt tên và xác định các đối tượng trong kho lưu trữ của nó. Các file và commit được kiểm tra và truy xuất bằng tổng kiểm tra của nó tại thời điểm thanh toán. Nó lưu trữ lịch sử của mình theo cách mà ID của các commit cụ thể phụ thuộc vào lịch sử phát triển hoàn chỉnh dẫn đến commit đó. Sau khi nó được xuất bản, người ta không thể thay đổi phiên bản cũ của nó.
  • Tốc độ(Speed)
    Git rất nhanh , vì vậy nó có thể hoàn thành tất cả các nhiệm vụ trong một thời gian. Hầu hết các hoạt động git được thực hiện trên kho lưu trữ cục bộ, vì vậy nó cung cấp một tốc độ rất lớn . Ngoài ra, một hệ thống kiểm soát phiên bản tập trung liên tục giao tiếp với một máy chủ ở đâu đó.
    Các bài kiểm tra hiệu suất do Mozilla thực hiện cho thấy nó cực kỳ nhanh so với các VCS khác . Tìm nạp lịch sử phiên bản từ kho lưu trữ được lưu trữ cục bộ nhanh hơn nhiều so với việc tìm nạp nó từ máy chủ từ xa. Phần cốt lõi của Git được viết bằng C , bỏ qua chi phí thời gian chạy liên quan đến các ngôn ngữ cấp cao khác.
    Git được phát triển để hoạt động trên nhân Linux; vì vậy nó đủ khả năng để xử lý các kho lưu trữ lớn một cách hiệu quả. Ngay từ đầu, tốc độhiệu suất đã là mục tiêu chính của Git.
  • Hỗ trợ phát triển phi tuyến tính(Supports non-linear development)
    Git hỗ trợ phân nhánh và hợp nhất liền mạch , giúp hình dung và điều hướng sự phát triển phi tuyến tính. Một nhánh trong Git đại diện cho một commit duy nhất. Chúng ta có thể xây dựng cấu trúc nhánh đầy đủ với sự trợ giúp của commit gốc của nó.
  • Phân nhánh và hợp nhất(Branching vs merge)
    Phân nhánh và hợp nhất
    là các tính năng tuyệt vời của Git, điều này làm cho nó khác với các công cụ SCM khác. Git cho phép tạo nhiều nhánh mà không ảnh hưởng đến nhau. Chúng ta có thể thực hiện các tác vụ như tạo , xóahợp nhất(merge) trên các nhánh và các tác vụ này chỉ mất vài giây. Dưới đây là một số tính năng có thể đạt được bằng cách phân nhánh:
    • Chúng ta có thể tạo một nhánh riêng cho một mô-đun mới của dự án, commit và xóa nó bất cứ khi nào chúng ta muốn.
    • Chúng ta có thể có một nhánh sản xuất , luôn có những gì đi vào sản xuất và có thể được hợp nhất để thử nghiệm trong nhánh thử nghiệm.
    • Chúng ta có thể tạo một nhánh demo cho thử nghiệm và kiểm tra xem nó có hoạt động hay không. Chúng ta cũng có thể xóa nó nếu cần.
    • Lợi ích cốt lõi của việc phân nhánh là nếu chúng ta muốn đẩy một thứ gì đó đến một kho lưu trữ từ xa, chúng ta không cần phải đẩy tất cả các nhánh của mình. Chúng ta có thể chọn một vài nhánh của chúng ta hoặc tất cả chúng cùng nhau.
  • Đảm bảo dữ liệu(Đảm bảo dữ liệu)
    Mô hình dữ liệu Git đảm bảo tính toàn vẹn code của mọi đơn vị trong dự án của chúng ta. Nó cung cấp một ID commit duy nhất cho mọi commit thông qua thuật toán SHA . Chúng ta có thể truy xuấtcập nhật commit bằng ID commit. Hầu hết các hệ thống kiểm soát phiên bản tập trung không cung cấp tính toàn vẹn như vậy theo mặc định.
  • Khu vực dàn dựng (Staging)
    Các khu vực Staging cũng là một chức năng độc đáo của Git. Nó có thể được coi là một bản xem trước của commit tiếp theo của chúng ta , hơn nữa, một khu vực trung gian nơi các commit có thể được định dạng và xem xét trước khi hoàn thành. Khi bạn thực hiện một commit, Git sẽ thực hiện các thay đổi trong khu vực dàn dựng và biến chúng thành một commit mới. Chúng ta được phép thêm và xóa các thay đổi khỏi khu vực dàn dựng . Khu vực dàn dựng có thể được coi là nơi Git lưu trữ các thay đổi.
    Mặc dù, Git không có một thư mục dàn dựng chuyên dụng, nơi nó có thể lưu trữ một số đối tượng đại diện cho các thay đổi file (đốm màu). Thay vì điều này, nó sử dụng một file được gọi là chỉ mục.
  • Một tính năng khác của Git làm cho nó khác biệt với các công cụ SCM khác là có thể nhanh chóng tách một số file của chúng ta và commit chúng mà không cần gửi các file đã sửa đổi khác trong thư mục làm việc của chúng ta.Duy trì lịch sử sạch sẽ
    Git tạo điều kiện cho Git Rebase, Đây là một trong những tính năng hữu ích nhất của Git. Nó tìm nạp các commit mới nhất từ ​​nhánh chính và đặt code của chúng ta lên trên đó. Do đó, nó duy trì một lịch sử sạch sẽ của dự án.

3. Lợi ích của Git

Ứng dụng kiểm soát phiên bản cho phép chúng ta theo dõi tất cả các thay đổi mà chúng ta thực hiện trong các file của dự án của mình. Mỗi khi chúng ta thực hiện thay đổi trong các file của một dự án hiện có, chúng ta có thể đẩy những thay đổi đó vào một kho lưu trữ. Các developer khác được phép lấy các thay đổi của bạn từ kho lưu trữ và tiếp tục làm việc với các bản cập nhật mà bạn đã thêm vào file dự án.

Một số lợi ích đáng kể của việc sử dụng Git như sau:

  • Tiết kiệm thời gian(save time)
    Git là công nghệ nhanh như chớp. Mỗi lệnh chỉ mất vài giây để thực thi nên chúng ta có thể tiết kiệm rất nhiều thời gian so với đăng nhập vào tài khoản GitHub và tìm hiểu các tính năng của nó.
  • Làm việc ngoại tuyến(offline working)
    Một trong những lợi ích quan trọng nhất của Git là nó hỗ trợ làm việc ngoại tuyến . Nếu chúng ta đang gặp phải sự cố kết nối internet, nó sẽ không ảnh hưởng đến công việc của chúng ta. Trong Git, chúng ta có thể làm hầu hết mọi thứ cục bộ. So sánh, các CVS ​​khác như SVN bị hạn chế và thích kết nối với kho lưu trữ trung tâm hơn.
  • Hoàn lại sai lầm(undo mistakes)
    Một lợi ích bổ sung của Git là chúng ta có thể Hoàn tác lỗi. Đôi khi hoàn tác có thể là một lựa chọn cứu tinh cho chúng ta. Git cung cấp tùy chọn hoàn tác cho hầu hết mọi thứ.
  • Theo dõi các thay đổi(Track changes)
    Git tạo điều kiện với một số tính năng thú vị như Diff, LogStatus , cho phép chúng ta theo dõi các thay đổi để chúng ta có thể kiểm tra trạng thái, so sánh các file hoặc chi nhánh của mình.

4. Tại sao nên dùng Git?

Chúng ta đã thảo luận về nhiều tính nănglợi ích của Git chứng tỏ Git chắc chắn là hệ thống kiểm soát phiên bản hàng đầu . Bây giờ, chúng ta sẽ thảo luận một số điểm khác về lý do tại sao chúng ta nên chọn Git.

Các lợi ích của việc dùng Git
  • Git đảm bảo
    Git được phát triển để đảm bảo sự an ninhtoàn vẹn của phiên bản phúc nội dung kiểm soát. Nó sử dụng tổng kiểm tra trong quá trình vận chuyển hoặc giả mạo hệ thống file để xác nhận rằng thông tin không bị mất. Bên trong nó tạo ra một giá trị tổng kiểm tra từ nội dung của file và sau đó xác minh nó khi truyền hoặc lưu trữ dữ liệu.
  • Hệ thống kiểm soát phiên bản hợp thời
    Git là hệ thống kiểm soát phiên bản được sử dụng rộng rãi nhất . Nó có các dự án tối đa trong số tất cả các hệ thống kiểm soát phiên bản. Do quy trình làm việc và các tính năng tuyệt vời của nó , nó là một lựa chọn ưu tiên của các developer.
  • Mọi thứ đều là cục bộ
    Hầu như tất cả các hoạt động của Git có thể được thực hiện cục bộ; đây là một lý do quan trọng cho việc sử dụng Git. Chúng ta sẽ không phải đảm bảo kết nối internet.
  • Cộng tác với các dự án công cộng
    Có nhiều dự án công cộng trên GitHub. Chúng ta có thể hợp tác trong các dự án đó và thể hiện sự sáng tạo của mình với thế giới. Nhiều developer đang cộng tác trong các dự án công cộng. Sự hợp tác cho phép chúng ta sát cánh với các developer có kinh nghiệm và học hỏi được nhiều điều từ họ; do đó, kỹ năng lập trình của chúng ta sẽ được nâng lên một tầm cao mới.
  • Gây ấn tượng với nhà tuyển dụng
    Chúng ta có thể gây ấn tượng với nhà tuyển dụng bằng cách đề cập đến Git và GitHub trong sơ yếu lý lịch của mình. Gửi liên kết hồ sơ GitHub của bạn tới bộ phận nhân sự của tổ chức bạn muốn tham gia. Thể hiện kỹ năng của bạn và tạo ảnh hưởng đến chúng thông qua công việc của bạn. Nó làm tăng cơ hội được tuyển dụng.

5. Điều kiện tiên quyết

Git không phải là một ngôn ngữ lập trình, vì vậy bạn chỉ nên hiểu cơ bản về các lệnh của Windows.

6. Đọc giả

Cafedev đã phát triển series tự học Git này cho cả người mới bắt đầu và chuyên nghiệp vì nó chứa đầy đủ các kiến thức từ cơ bản tới nâng cao cho các bạn. Vì vậy, nó sẽ giúp bạn học Git một cách nhanh chóng để áp dụng cho công việc và học tập.

7. Các vấn đề

Chúng ta đảm bảo với bạn rằng bạn sẽ không gặp bất kỳ khó khăn nào trong hướng dẫn Git của chúng ta. Tuy nhiên, nếu bạn tìm thấy bất kỳ sai lầm, bạn có thể inbox với AD để báo lỗi.

 Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!