Hỏi đáp công nghệ

Git là gì? Tại sao nó lại được cộng đồng Dev yêu thích như vậy?

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

Table of Contents

Git là một hệ thống kiểm soát phiên bản mà các nhà phát triển sử dụng trên phạm vi toàn thế giới. Nó giúp bạn theo dõi các phiên bản code khác nhau cũng như cộng tác với các nhà phát triển khác.

Nếu bạn đang thực hiện một dự án theo thời gian, bạn có thể muốn theo dõi những thay đổi nào trong code đã được thực hiện, bởi ai và những thay đổi đó được thực hiện khi nào. Điều này ngày càng trở nên quan trọng trong trường hợp bạn gặp lỗi trong code của mình! Git có thể giúp bạn điều này.

Nhưng Git cũng có thể hơi đáng sợ và khó hiểu khi bạn mới bắt đầu học nó, vì vậy trong bài viết này tôi sẽ giới thiệu Git là gì theo cách hiểu của con người. Chúng tôi sẽ đề cập đến các chủ đề như kho lưu trữ, commit, nhánh (branch) và nhiều hơn nữa. Hãy cùng Hỏi đáp Công nghệ bắt đầu tìm hiểu nhé!

Đây là những gì chúng ta sẽ cùng xem xét trong bài viết này:

  • Git là gì?
  • GitHub là gì?
  • Cách bắt đầu sử dụng Git
  • Git theo dõi những thay đổi như thế nào?
  • Quy trình làm việc Git điển hình

Git là gì?

Git là gì
Git là gì?

Git là một nền tảng phần mềm chủ yếu được sử dụng bởi các lập trình viên máy tính để giúp họ dễ dàng cộng tác với nhau. Về cốt lõi, Git theo dõi các thay đổi đối với file và cho phép nhiều người dùng phối hợp cập nhật cho các file đó. Trường hợp sử dụng phổ biến nhất đối với Git là các nhà phát triển làm việc trên các file source code (mã nguồn), nhưng nó có thể được sử dụng để quản lý các bản cập nhật cho bất kỳ loại file nào.

Git cũng là tiêu chuẩn kiểm soát phiên bản cho GitHub và các hệ thống quản lý source code khác, và nó được sử dụng rộng rãi bên trong DevOps để triển khai CI/CD.

Đối với các nhà phát triển triển khai và quản lý ứng dụng của họ trên Kubernetes hoặc các nền tảng đám mây riêng khác, GitOps cung cấp các biện pháp hay nhất để làm việc với các ứng dụng và cluster được chứa trong vùng chứa.

Để kiểm tra xem bạn đã cài đặt Git trên máy tính chưa, bạn có thể nhập lệnh git --versionvào terminal.

Nếu bạn đã cài đặt Git thì bạn sẽ thấy bạn có phiên bản nào. Nếu bạn chưa cài đặt Git, bạn có thể truy cập trang web chính thức của Git và dễ dàng làm theo hướng dẫn tải xuống để cài đặt phiên bản chính xác cho hệ điều hành của mình.

GitHub là gì?

GitHub là một sản phẩm cho phép bạn lưu trữ các dự án Git của mình trên một máy chủ từ xa ở đâu đó (hay nói cách khác là trên đám mây).

Điều quan trọng cần nhớ là GitHub không phải là Git. GitHub chỉ là một dịch vụ lưu trữ. Có những công ty khác cung cấp dịch vụ lưu trữ tương tự như GitHub, chẳng hạn như Bitbucket và GitLab.

Git là gì
Git là gì? Sự khác biệt giữa GitHub và Git

Git có phải là một ngôn ngữ lập trình không?

Git không phải là một ngôn ngữ lập trình, nhưng nó là một thành phần vô cùng quan trọng đối với các lập trình viên máy tính, dù cho họ làm việc với (hầu hết) ngôn ngữ nào mà bạn có thể đặt tên. Ngày nay, Git là tiêu chuẩn de facto cho những gì được gọi là phần mềm kiểm soát phiên bản.

Các lập trình viên sử dụng kiểm soát phiên bản để theo dõi các bản cập nhật cho các codebase lớn, quay trở lại các phiên bản trước đó nếu cần và xem bất kỳ thay đổi nào đã được thực hiện, cũng như ai đã thực hiện chúng. Nó trở thành một phần không thể thiếu của mô hình phát triển phần mềm Agile và là một tính năng trung tâm của GitOps, mở rộng triết lý devops nhanh nhẹn cho các hệ thống container-based (dựa trên vùng chứa).

Tại sao nó được gọi là Git?

Tên của Git gắn liền với lịch sử của nó. Git được tạo ra bởi một người mà bạn gần như chắc chắn biết tên: Linus Torvalds, người tạo ra Linux. Git được tạo ra vào năm 2005 đặc biệt để giúp quản lý sự phát triển của nhân Linux (Linux kernel). Torvalds không hài lòng với nhiều hệ thống kiểm soát phiên bản khác vào thời điểm đó và BitKeeper, được một số nhà phát triển kernel ưa chuộng, không phải là mã nguồn mở. (Đó là một minh chứng cho tác động to lớn của Torvalds đối với ngành máy tính mà một nền tảng phần mềm phổ biến như Git chỉ là tuyên bố nổi tiếng lớn thứ hai của anh ấy).

Khi phiên bản Git đầu tiên được tung ra, Torvalds đã nhanh chóng đưa ra nhiều cách giải thích cho tên gọi của nó. Lời giải thích khả dĩ nhất là Git là một tổ hợp ba chữ cái dễ phát âm và chưa được sử dụng bởi một lệnh Unix khác. Từ này cũng có vẻ nghe giống như get (lấy) – vì bạn có thể sử dụng Git để lấy mã nguồn từ máy chủ. Từ git cũng là một thuật ngữ lạm dụng nhẹ trong tiếng Anh Anh — có liên quan đến việc bạn đang phát điên với một số phần mềm.

Torvalds nói thêm rằng bạn có thể nói đó là chữ viết tắt của “global information tracker” – trình theo dõi thông tin toàn cầu, nếu bạn đang có tâm trạng tốt, hoặc “goddamn idiot truckload” – xe tải ngu ngốc chết tiệt [từ thô lỗ ở đây] nếu bạn đang ở trong tình trạng tồi tệ.

Xem thêm >> Selenium là gì? Định nghĩa, cách hoạt động và lợi ích của Selenium

Ai sở hữu Git?

Như đã lưu ý, Git được tạo đặc biệt như một mã nguồn mở thay thế cho phần mềm kiểm soát phiên bản hiện có, có nghĩa là không có cá nhân hoặc tổ chức nào kiểm soát nó. Vài tháng sau khi thành lập, Torvalds đã giao nhiệm vụ bảo trì cho Junio ​​Hamano, người đã đóng góp lớn cho dự án cho đến thời điểm đó. Hamano, người hiện làm việc cho Google, tiếp tục là người bảo trì cốt lõi của Git ngày nay.

Git so với GitHub

Git cung cấp chức năng kiểm soát phiên bản phân tán. Bạn có thể sử dụng Git để quản lý các nỗ lực viết code riêng tư của riêng mình trên máy tính, nhưng nó thường được sử dụng nhiều hơn cho nhiều người trên nhiều máy tính muốn cộng tác. Trong các dự án như vậy, phiên bản chuẩn của source code nằm trên một máy chủ ở đâu đó — một kho lưu trữ trung tâm theo cách nói của Git — và người dùng cá nhân có thể upload lên và tải xuống các bản cập nhật từ kho lưu trữ đó.

Git cho phép bạn sử dụng máy tính của chính mình làm repository (kho lưu trữ) trung tâm cho người khác hoặc thiết lập một kho lưu trữ ở nơi khác, nhưng cũng có nhiều nhà cung cấp dịch vụ cung cấp dịch vụ lưu trữ Git thương mại. GitHub, được thành lập vào năm 2008 và được Microsoft mua lại vào năm 2018, cho đến nay là nổi bật nhất, không chỉ cung cấp dịch vụ lưu trữ mà còn cung cấp nhiều tính năng khác. Bạn có thể tìm hiểu thêm về GitHub, nhưng điều quan trọng cần ghi nhớ lúc này là, mặc dù GitHub được xây dựng dựa trên sự phát triển với Git, bạn không cần phải có GitHub để sử dụng Git.

Kiểm soát phiên bản với Git

Chúng tôi đã đề cập đến một số điều cơ bản, vì vậy bây giờ chúng ta hãy đi sâu vào chi tiết hơn về cách Git hoạt động, cách sử dụng Git và tại sao nó lại phổ biến như vậy. Hướng dẫn đầy đủ về Git nằm ngoài phạm vi của bài viết này, nhưng chúng tôi có thể xem xét các khái niệm và thuật ngữ Git quan trọng nhất để giúp bạn bắt đầu.

Kho lưu trữ Git

Chúng tôi đã đề cập đến khái niệm kho lưu trữ (repository) ở bên trên. Kho lưu trữ là không gian chung nơi tất cả các phần trong dự án của bạn hoạt động. Nếu bạn đang làm việc trên một dự án của chính mình, bạn có thể chỉ cần một kho lưu trữ duy nhất, trong khi với một dự án cộng tác, bạn có thể sẽ làm việc từ một kho lưu trữ trung tâm. Kho lưu trữ trung tâm sẽ được lưu trữ trên máy chủ hoặc nhà cung cấp trung tâm như GitHub và mỗi nhà phát triển cũng sẽ có kho lưu trữ riêng trên máy tính của họ. (Chúng ta sẽ thảo luận về cách các tệp code trong tất cả các kho lưu trữ đó được đồng bộ hóa đúng cách trong đoạn tới.)

Một kho lưu trữ Git được chia thành hai khu vực. Có một khu vực staging, nơi bạn có thể thêm và xóa các file tạo nên dự án của mình và sau đó có lịch sử commit. Committ là trọng tâm của cách Git hoạt động, vì vậy chúng ta hãy thảo luận về thuật ngữ này tiếp theo.

Git commit

Một commit tốt nhất có thể được coi như một bức ảnh chụp nhanh dự án của bạn trông như thế nào tại một thời điểm nhất định. Khi bạn đã hài lòng với các file bạn đã đặt trong khu vực staging của mình, bạn sẽ đưa ra lệnh git commit, lệnh này sẽ đóng băng kịp thời trạng thái hiện tại của các file đó. Bạn có thể thực hiện thêm các thay đổi và commit mới nhưng bạn có thể hoàn nguyên về commit trước đó bất cứ lúc nào. Bạn cũng có thể so sánh hai commit để xem nhanh những gì đã thay đổi trong dự án của bạn.

Một điều quan trọng cần ghi nhớ là tạo commit không giống như đưa code vào production. Commit tạo ra một phiên bản ứng dụng của bạn mà bạn có thể kiểm thử, thử nghiệm, v.v. Nhóm phát triển có thể lặp lại nhanh chóng thông qua các commit như một phần của quá trình đưa ứng dụng vào trạng thái sẵn sàng sản xuất.

Git stash

Mặc dù các commit có thể được hoàn nguyên, nhưng chúng đại diện cho một số lượng commit nhất định. Nếu bạn đang làm việc trên các file trong khu vực staging của mình và muốn chuyển sang một thứ khác mà không thực sự commit các thay đổi dang dở của mình, bạn có thể sử dụng lệnh git stash để lưu chúng lại và sử dụng sau này.

Git branch và git merge

Cho đến bây giờ, bạn có thể tưởng tượng các commit là một chuỗi tuyến tính các ảnh chụp nhanh của code phát triển theo thời gian. Nhưng một trong những khía cạnh thực sự thú vị và mạnh mẽ của Git là bạn có thể sử dụng nó để làm việc song song trên các phiên bản ứng dụng khác nhau, điều này rất quan trọng đối với việc phát triển phần mềm nhanh.

Để hiểu các nhánh của Git và hợp nhất (merge) trong thực tế, hãy tưởng tượng bạn có một ứng dụng có tên CoolApp, với phiên bản 1.0 đang được sản xuất. Bạn đang làm việc đều đặn trên CoolApp 2.0, với đủ loại tính năng mới thú vị mà bạn đang phát triển dưới dạng một loạt commit trong kho lưu trữ của mình. Nhưng sau đó bạn phát hiện ra rằng CoolApp 1.0 có một lỗ hổng bảo mật nghiêm trọng và cần bản vá ngay lập tức.

Bạn có thể quay lại commit của mình về CoolApp 1.0, tạo bản vá và gửi code đó vào bản production dưới dạng CoolApp 1.1 mà không làm ảnh hưởng hoặc thêm vào chuỗi commit trên CoolApp 2.0, vẫn có 1.0 là parent của chúng. Phiên bản 1.1 và 2.0 hiện được cho là nằm trên các nhánh riêng biệt trong codebase của bạn. Vì phiên bản 1.1 đang được sản xuất trong khi 2.0 đang được phát triển, chúng tôi gọi 1.1 là nhánh chính (main branch).

Sau khi CoolApp 2.0 sẵn sàng ra mắt, bạn cần kết hợp code và chức năng mới của nó với bản cập nhật bảo mật từ phiên bản 1.1. Quá trình này, được gọi là merge hai nhánh, là một phần quan trọng trong phép thuật của Git. Git cố gắng tạo một commit mới từ hai “parent” khác nhau, có nghĩa là, các commit gần đây nhất từ ​​hai nhánh.

Nó tạo ra commit mới bằng cách so sánh những người tiền nhiệm của nó trở lại thời điểm mà hai nhánh tách ra, sau đó hợp nhất tất cả những thay đổi được thực hiện dọc theo cả hai nhánh trong commit mới được hợp nhất. Nếu một số thông tin — một khối code cụ thể, chẳng hạn — được thay đổi ở cả hai nhánh, theo những cách khác nhau, Git sẽ đặt câu hỏi về phiên bản nào thuộc về phiên bản commit mới cho nhà phát triển.

Xem thêm >> SMB là gì? Bạn có nên tắt giao thức SMB không?

Thanh toán Git

Nhiều dự án lớn có nhiều chi nhánh đang hoạt động được phát triển cùng một lúc, song song. Lệnh git checkoutlà cách bạn thay đổi nhánh nào bạn đang làm việc. Quá trình này cập nhật các file trong thư mục làm việc lên phiên bản mới nhất cho chi nhánh mà bạn quan tâm; tất cả các commit mới của bạn sau đó sẽ được commit trên nhánh đó cho đến khi bạn kiểm tra một nhánh khác.

Sử dụng Git để cộng tác

Git là gì
Git là gì? Sử dụng Git để cộng tác

Cho đến nay, chúng ta đã nói về những gì xảy ra trong kho lưu trữ Git như thể bạn là người duy nhất làm việc trên đó. Nhưng Git được biết đến nhiều nhất như một công cụ cộng tác. Tiếp theo, chúng ta sẽ xem xét cách các khái niệm Git hoạt động trong bối cảnh cộng tác.

Git clone

Cách dễ nhất để bắt đầu cộng tác với những người khác trong một dự án là sao chép (clone) một kho lưu trữ đã tồn tại trên một máy tính khác. Clone tải xuống toàn bộ nội dung của kho lưu trữ đó vào một kho lưu trữ trên máy của riêng bạn.

Chúng ta đã thảo luận về khái niệm kho lưu trữ trung tâm. Rất phổ biến đối với các dự án coi một kho lưu trữ như vậy, được lưu trữ trên GitHub hoặc nơi khác, là “nguồn lưu trữ” chính tắc về codebase của dự án trông như thế nào. Tuy nhiên, hãy lưu ý rằng câu hỏi về kho lưu trữ nào là trung tâm là vấn đề quy ước được những người tham gia dự án đồng ý và không được thực thi bởi chính Git. Về lý thuyết, bạn có thể có nhiều kho lưu trữ khác nhau trao đổi code mà không có kho lưu trữ duy nhất nào là trung tâm.

Git pull và Git push

Chúng ta đã thảo luận về cách Git có thể dung hòa hai nhánh commit trên cùng một máy. Nó có thể làm tương tự cho hai nhánh trên các máy riêng biệt, về cơ bản sử dụng các kỹ thuật giống nhau. Quá trình mà một nhánh được di chuyển giữa các máy được gọi là pull hoặc push, tùy thuộc vào cách nó bắt đầu. Nếu bạn đang đưa một nhánh từ máy chủ từ xa vào máy tính của mình, bạn đang pull. Nếu bạn đang gửi một nhánh từ máy của mình sang máy khác, bạn đang push.

Yêu cầu pull Git

Đẩy code của bạn lên một máy khác – hoặc vào kho lưu trữ trung tâm mà toàn bộ dự án phụ thuộc vào – có vẻ hơi quá đà. Một kịch bản phổ biến hơn, là chìa khóa cho bản chất hợp tác của phát triển Git, là pull request. Giả sử bạn đã hoàn thành code cho một tính năng mới và bạn muốn nó được tích hợp vào codebase của dự án. Bạn sẽ đưa ra một pull request, yêu cầu này chính thức yêu cầu các nhà quản lý dự án kéo code mới của bạn vào kho lưu trữ trung tâm.

Pull request không chỉ cung cấp cho người quản lý dự án cơ hội chấp nhận hoặc từ chối đóng góp của bạn, nó còn tạo ra một diễn đàn thảo luận nhỏ trên kho lưu trữ trung tâm, nơi tất cả các thành viên dự án có thể đóng góp về yêu cầu. Đây là một cách quan trọng mà các nhà phát triển có thể chia nhỏ các thay đổi đối với codebase của một dự án, đặc biệt là trong các dự án mã nguồn mở mà Git có thể là nơi chính mà những người đóng góp tương tác.

Git fork

Một nhánh có nghĩa là một sự khởi hành tạm thời khỏi codebase chính, cuối cùng sẽ được hợp nhất trở lại vào nó. Mặt khác, fork – ngã ba là một sự ra đi lâu dài hơn. Đối với các dự án nguồn mở nói riêng, một đợt fork xảy ra khi một nhà phát triển quyết định họ muốn sử dụng một cơ sở mã nguồn mở hiện có và phát triển nó cho các mục tiêu của riêng họ, điều này có thể khác với những người bảo trì hiện tại của dự án. GitHub đặc biệt dễ dàng phân tách từ các kho lưu trữ Git hiện có; chỉ với một cú nhấp chuột, bạn có thể sao chép một kho lưu trữ có sẵn và bắt đầu làm việc với nó theo các điều kiện của riêng bạn.

Xem thêm >> Ransomware là gì? Cách chống lại mã độc tống tiền

Git với Windows

Như đã nói trước đó, Git được phát triển ban đầu để phát triển nhân Linux, và nó có dạng một loạt các tiện ích command-line. Cấu trúc và cú pháp lệnh của nó dựa rất nhiều vào Unix, có nghĩa là nó chạy ít nhiều nguyên bản trên các hệ điều hành giống Unix như Linux và macOS. Việc chuyển Git sang Windows phức tạp hơn một chút và dựa vào Git bash, một trình mô phỏng trình Bourne shell dành cho Windows được tích hợp sẵn trong Git dành cho Windows .

Tích hợp GUI và IDE

Tất nhiên, nhiều nhà phát triển Windows đã quen với việc sử dụng GUI và vì vậy Git cho Windows cũng bao gồm giao diện người dùng đồ họa. Người dùng macOS và Linux cũng không nên cảm thấy bị bỏ rơi: có rất nhiều GUI để sử dụng. GUI đa nền tảng cũng tồn tại và cung cấp nhiều tính năng khác nhau.

Còn rất nhiều thứ khác để tìm hiểu về Git, và trong bài viết này, chúng tôi chỉ trình bày sơ lược về Git là gì và những khái niệm cơ bản của nó. Nếu bạn còn bất kỳ thắc mắc nào, đừng ngại để lại comment phía dưới nhé!

Các bài viết liên quan

Leave a Comment

Email của bạn sẽ không được hiển thị công khai.

Bài viết liên quan