Trang chủ » Blog » GIT là gì? Cách thức hoạt động và các lệnh GIT cơ bản mà lập trình viên nên biết

GIT là gì? Cách thức hoạt động và các lệnh GIT cơ bản mà lập trình viên nên biết

bởi Trần Duy Khánh | 18/10/2023 01:49 | Blog

Git – một thuật ngữ quen thuộc trong lập trình với nhiều tính năng hữu ích mà không phải ai cũng biết. Để hiểu rõ hơn về Git là gì và cách sử dụng Git hiệu quả, mời bạn cùng CodeGym tìm hiểu nhé!

1. Git là gì? Cách thức hoạt động của Git

1.1. Định nghĩa về Git

Git là một hệ thống quản lý các phiên bản phân tán (DVCS) mã nguồn mở và miễn phí được thiết kế để xử lý mọi thứ từ các dự án nhỏ đến rất lớn cực nhanh chóng và hiệu quả vượt trội.

Hiện nay, Git là hệ thống quản lý phiên bản phân tán phổ biến nhất mà hầu như lập trình viên nào cũng phải biết. Git giúp cung cấp cho lập trình viên các kho lưu trữ riêng, nơi chứa toàn bộ lịch sử thay đổi hỗ trợ lập trình viên quản lý các dự án code và khôi phục dữ liệu, phiên bản trong quá trình làm việc.

GIT

Git là một hệ thống quản lý các phiên bản phân tán (DVCS) mã nguồn mở và miễn phí

Git cũng là một hệ thống quản lý phiên bản (VCS), tuy nhiên nó có nhiều điểm khác biệt so với các VCS thông thường. Cụ thể, cách đọc và lưu trữ dữ liệu của Git có nhiều điểm nổi bật hơn. Nếu như các hệ thống lưu trữ thông tin thay đổi dựa trên file và lưu trữ dưới dạng danh sách, các file này thay đổi theo thời gian. Thì Git coi các thông tin lưu trữ là một tập hơn snapshot – tập hợp toàn bộ ảnh chụp nội dung của file thông tin tại thời điểm.

Khi lập trình viên đưa ra các lệnh, Git có chức năng chụp lại thông tin ở thời điểm đó đồng thời tạo ra một snapshot. Git chỉ lưu trữ file khi các tệp này có sự thay đổi. Nhờ đó, Git không tốn nhiều thời gian trong việc xem xét thông tin, giải mã của phiên bản và hệ thống. Với cách lưu trữ này, Git được ví như hệ thống gồm nhiều tệp nhỏ.

Lưu trữ dữ liệu dưới dạng các thay đổi đối với phiên bản cơ sở

Các VCS khác lưu trữ dữ liệu dưới dạng các thay đổi đối với phiên bản cơ sở của mỗi tệp

Git lưu trữ dữ liệu dưới dạng ảnh chụp nhanh

Git lưu trữ dữ liệu dưới dạng ảnh chụp nhanh của dự án theo thời gian

Theo cuốn sách Pro Git được viết bởi Scott Chacon và Ben Straub thì Git có 4 đặc điểm đặc biệt so với các VCS khác:

  • Ảnh chụp nhanh không phải sự khác biệt: Sự khác biệt chính giữa Git và bất kỳ VCS nào khác là cách Git nghĩ về dữ liệu của nó, Git coi dữ liệu của nó giống như một loạt ảnh chụp nhanh của một hệ thống tệp thu nhỏ thay vì coi thông tin chúng lưu trữ dưới dạng một tập hợp các tệp và những thay đổi với từng tệp theo thời gian như các VCS khác.
  • Gần như mọi hoạt động mang tính cục bộ: Hầu hết các hoạt động trong Git chỉ cần các tệp và tài nguyên cục bộ để hoạt động – nói chung không cần thông tin từ một máy tính khác trên mạng của bạn.
  • Tính toàn vẹn: Bạn không thể thay đổi nội dung của bất kỳ tệp hoặc thư mục nào mà Git không biết về nó như vậy bạn không thể mất thông tin trong quá trình chuyển tiếp hoặc bị hỏng tệp mà Git không thể phát hiện ra.
  • Git thường chỉ thêm dữ liệu: Khi bạn thực hiện các hành động trong Git, gần như tất cả chúng chỉ thêm dữ liệu vào cơ sở dữ liệu Git.

Có 3 trạng thái tệp chính mà Git lưu trữ bạn cần ghi nhớ khi sử dụng:

  • modified: Tệp đã thay đổi nhưng chưa được đưa vào cơ sở dữ liệu của bạn.
  • staged: Bạn đã đánh dấu một tệp đã sửa đổi trong phiên bản hiện tại của nó để lưu trữ ảnh chụp nhanh tiếp theo.
  • committed: Dữ liệu tệp đã được lưu trữ an toàn trong cơ sở dữ liệu cục bộ của bạn.

1.2. Cách Git hoạt động

3 phần chính của một dự án Git: Cây làm việc (the working tree) hay thư mục làm việc (the working directory), Vùng tổ chức (the staging area) và Thư mục Git (the Git directory). Quy trình làm việc của Git theo 3 phần chính như sau:

  1. Bạn sửa đổi các tập tin trong cây làm việc của mình.
  2. Bạn chọn lọc giai đoạn chỉ những thay đổi mà bạn muốn lưu trữ tiếp theo, điều này xác nhận rằng bạn chỉ thêm những thay đổi đó vào khu vực tổ chức.
  3. Bạn thực hiện một cam kết, thao tác này sẽ nhận các tệp như chúng nằm trong khu vực tổ chức và lưu trữ ảnh chụp nhanh đó vĩnh viễn vào thư mục Git của bạn.

Nếu một phiên bản cụ thể của tệp nằm trong thư mục Git thì nó được coi là đã cam kết (committed). Nếu nó đã được sửa đổi và được thêm vào khu vực tổ chức, nó sẽ được coi là đã tổ chức (staged). Và nếu nó đã được thay đổi kể từ khi được kiểm tra nhưng chưa được dàn dựng thì nó sẽ có trạng thái là đã được sửa đổi (modified).

Quy trình làm việc cơ bản của Git

Quy trình làm việc cơ bản của Git theo 3 phần chính

2. Lợi ích khi sử dụng Git khi lập trình

Các dự án lập trình có nhiều lập trình viên làm việc cùng lúc. Sử dụng Git giúp đảm bảo không có xung đột code giữa các lập trình viên. Thêm vào đó, các yêu cầu của dự án lớn thay đổi thường xuyên nên sử dụng Git giúp các nhà phát triển dễ dàng revert và quay lại phiên bản cũ hơn của code.

Ngoài ra, một số dự án đang được chạy song song có liên quan đến cùng một cơ sở code. Trong trường hợp như vậy, khái niệm phân nhánh trong hệ thống quản lý văn bản phân tán là rất quan trọng. Git mang đến nhiều lợi ích cho lập trình viên bởi:

  • Dễ sử dụng, thao tác nhanh, gọn, lẹ và rất an toàn.
  • Dễ dàng kết hợp các phân nhánh (branch), có thể giúp quy trình làm việc code theo nhóm đơn giản hơn rất nhiều.
  • Chỉ cần clone mã nguồn từ kho chứa hoặc clone một phiên bản thay đổi nào đó từ kho chứa, hoặc một nhánh nào đó từ kho chứa là lập trình viên có thể làm việc ở mọi lúc mọi nơi.
  • Deployment sản phẩm của lập trình viên một cách không thể nào dễ dàng hơn.

Lợi ích khi sử dụng GIT

Git rất dễ sử dụng, thao tác nhanh và rất an toàn

3. Các lệnh Git cơ bản lập trình viên nên biết

Git được chia thành nhiều lệnh, các lệnh này có thể từ đơn giản đến phức tạp. Trong đó, các lệnh Git phổ biến nhất là:

  • Git config: thiết lập tên đăng nhập cũng như email kèm theo của lập trình viên trong main configuration file.
  • Git init: tạo ra một git repository trong một dự án mới hoặc dự án đã có sẵn.
  • Git clone: cho phép lập trình viên Copy 1 git repository từ kho lưu trữ từ xa.
  • Git status: dùng khi lập trình viên cần check trạng thái của các file đã sửa đổi.
  • Git add: được sử dụng khi lập trình viên cần đổi Stage hoặc index.
  • Git commit: giúp Git lưu lại một ảnh chụp màn hình/snapshot khi có thay đổi trong thư mục.
  • Git push/git pull: thay đổi tới các kho dữ liệu remote.
  • Git branch: giúp lập trình viên liệt kê chi tiết các nhánh trong hệ thống.
  • Git checkout: lập trình viên có thể dùng code để chuyển sang một nhánh khác.
  • Git stash: lưu các thay đổi khi lập trình viên không muốn commit tại thời điểm đó.
  • Git merge: dùng để nối hai nhánh với nhau.
  • Git reset: loại bỏ tệp tin đã đưa vào mục Staging Area.
  • Git remote: giúp kiểm tra và thêm các kho lưu trữ trực tuyến.
  • Git add: Thêm một lệnh, tệp tin.

4. 15+ thuật ngữ quan trọng liên quan đến Git

Git sử dụng nhiều thuật ngữ khác nhau, lập trình viên nên nắm rõ về các loại thuật ngữ này để sử dụng Git hiệu quả nhất. Một số thuật ngữ quan trọng liên quan đến Git có thể kể đến như:

  • Branch: Branch là các nhánh trong Git, tương ứng với phiên bản cụ thể trong kho lưu trữ. Branch giúp lập trình viên dễ dàng truy cập cũng như theo dõi các thay đổi của các phiên bản. Từ đó, lập trình viên dễ dàng thử nghiệm và lựa chọn sử dụng phiên bản phù hợp.
  • Commit: Hiểu một cách đơn giản, commit là thuật ngữ thể hiện một thời điểm cụ thể trong lịch sử thực hiện code của lập trình viên. Các dự án sẽ có nhiều thời điểm cụ thể trong lịch sử nên sẽ có nhiều code. Khi sử dụng git, lập trình viên có thể dùng lệnh commit kết hợp với lệnh git add để kiểm tra các thay đổi và lưu trữ trong local repository.

Commit trong Git

Commit là thuật ngữ thể hiện một thời điểm cụ thể trong lịch sử thực hiện code của lập trình viên

  • Check out: Checkout là thuật ngữ cũng là lệnh trong Git để chuyển giữa các nhánh hay còn gọi là các branch. Chỉ cần nhập lệnh git checkout + tên Branch, lập trình viên đã có thể chuyển đến nhánh mong muốn. Đồng thời, lệnh check out cũng cho phép lập trình viên chuyển về branch (master Branch).
  • Fork: Fork là tiện ích các bản sao của một kho lưu trữ. Thông qua Fork giúp lập trình viên có thể thử nghiệm các thay đổi. Nhờ việc sử dụng trên bản sao nên lập trình viên có thể thoải mái thay đổi mà không lo ảnh hưởng tới các dự án chính.
  • Fetch: Sử dụng lệnh Fetch sẽ cho phép lập trình viên nạp và tải các bản sao trên hệ thống lưu trữ và tải các tệp nhánh về máy tính cá nhân. Bạn có thể sử dụng lệnh Fetch để lưu các thay đổi mới nhất vào kho lưu trữ. Fetch cho phép lập trình viên có thể lưu trữ nhiều nhánh trong cùng một thời điểm.
  • Head: Các nhánh trong Git sẽ bao gồm các commit, đầu một nhánh commit gọi là Head. Một head sẽ tương ứng với một commit mới nhất trong hệ thống lưu trữ.
  • Index: Index là thuật ngữ được sử dụng khi lập trình viên thêm/xóa/thay đổi một file dữ liệu nào đó. Tuy nhiên, file dữ liệu này vẫn sẽ cần nằm trong thư mục cho đến khi lập trình viên sẵn sàng commit các thay đổi. Lập trình viên có thể phân biệt các thay đổi dựa vào màu sắc của commit. Các thay đổi có màu đỏ là chưa sẵn sàng, màu xanh tức là đã sẵn sàng để được thay đổi.
  • Master: Master trong Git là các nhánh chính trong kho lưu trữ của phần mềm Git mà lập trình viên đang sử dụng. Nhánh master sẽ bao gồm các thay đổi và commit trong thời gian gần đây nhất.
  • Merge: Trong Git, lập trình viên có thể dùng lệnh Git Merge để bổ sung các thay đổi từ branch này sang branch khác. Người dùng chỉ cần dùng lệnh Merge và pull requests là đã có thể dễ dàng kéo các yêu cầu từ các nhánh khác nhau.
  • Origin: Origin là phiên bản mặc định của hệ thống lưu trữ, giúp liên lạc với nhánh chính. Vì thế, lập trình viên có thể dùng lệnh Git push Origin master để thay đổi tới nhánh chính.
  • Pull: Hiểu một cách đơn giản, Pull là việc lập trình viên đề xuất các thay đổi mới cho Master Branch. Đây là tính năng phù hợp với các dự án cần làm việc nhóm. Người thực hiện có thể dùng tính năng Pull Request để yêu cầu người có nhiệm vụ thực hiện bảo trì kho lưu trữ để xem xét các thay đổi của hệ thống.
  • Push: Lệnh Push được sử dụng khi người lập trình cần cập nhật các branch từ xa. Đồng thời, Git Push cũng được dùng cho những thay đổi mới nhất mà người sử dụng đã commit.
  • Rebase: Nếu muốn phân tích, di chuyển các commit, rebase sẽ là lệnh phù hợp. Bạn cũng có thể sử dụng lệnh Git rebase để thoát khỏi commit hoặc hợp nhất 2 nhánh khác nhau.
  • Remote: Remote cũng là một kho lưu trữ. Tuy nhiên, đây là kho lưu trữ từ xa. Remote là một bản sao của một nhánh, có cấu trúc giao tiếp ngược dòng với nhánh gốc cũng như các nhánh khác có trong kho lưu trữ.
  • Repository: Repository là thuật ngữ thể hiện kho lưu trữ Git với các tập của dự án. Trong kho lưu trữ Repository này có thể chứa các tags, branch và các commit.
  • Stash: Lệnh Stash cho phép lập trình viên có thể loại bỏ các thay đổi hiện có tại mục đang lựa chọn. Sau đó, lập trình viên có thể xóa các stashes. Trong trường hợp lập trình viên muốn tạm dừng hoạt động của mình trong thời gian ngắn, lệnh Stash sẽ là lựa chọn hữu ích dành cho lập trình viên.
  • Tags: Các tags ở Git được sử dụng để theo dõi commit quan trọng trong hệ thống. Lập trình viên có thể sử dụng các tags này để chú thích commit, hỗ trợ việc tra cứu đối tượng nhanh chóng và đầy đủ hơn.
  • Upstream: Upstream là thuật ngữ để chơi nơi lập trình viên có thể push các thay đổi trong nhóm chính.

Trên đây là những thông tin tổng quan liên quan đến Git là gì, các lệnh Git và thuật ngữ liên quan. Hy vọng những thông tin này giúp bạn có thêm kiến thức trong công việc lập trình. Nếu bạn đang tìm kiếm một khóa học lập trình bài bản từ A-Z thì hãy ĐĂNG KÝ và để lại thông tin để được tư vấn lựa chọn lộ trình học tập phù hợp nhất với bản thân nhé!

Tags: Git

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

11 + 4 =

TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM
TƯ VẤN VỀ LỘ TRÌNH HỌC NGHỀ LẬP TRÌNH TẠI CODEGYM