Git là gì? Các lệnh Git cơ bản lập trình viên cần biết

21:38 17/03/2023

Git là một thuật ngữ quen thuộc trong ngành lập trình. Vậy Git là gì? Nó hoạt động như thế nào và đem lại lợi ích gì cho công việc của lập trình viên? Hãy theo dõi bài viết dưới đây để tìm ra câu trả lời nhé!

Git là gì?

Git là một hệ thống quản lý phiên bản phân tán (Open Source Distributed Version Control System).

Trong thực tế, các dự án thường có nhiều nhà phát triển làm việc song song. Chính vì thế, một hệ thống kiểm soát phiên bản như Git là vô cùng cần thiết để đảm bảo không có xung đột mã giữa các nhà phát triển. Ngoài ra, các yêu cầu trong dự án có xu hướng thay đổi thường xuyên, Git cho phép nhà phát triển quay lại phiên bản cũ của mã.

Thế nào là repository, branch?

  • Repository

Repository hay còn gọi là Repo, dịch ra tiếng Việt có nghĩa là kho, đây chính là nơi chứa tất cả mã nguồn cho một dự án được tạo bởi Git. Có thể hiểu một cách khác, Repository chính là khai báo thư mục chứa dự án của bạn trên local hoặc remote. Một repo sẽ có hai cấu trúc dữ liệu chính đó là Object store và Index được lưu trữ ẩn trong thư mục .git.

Có hai loại repository là local repository và remote repository:

Local repository: repo được cài đặt trên máy tính của lập trình viên, repo này sẽ đồng bộ hóa với remote bằng các lệnh của Git.

Remote repository: repo được cài đặt trên server chuyên dụng, điển hình hiện nay là Github.

  • Branch

Đối với những dự án có nhiều thành viên tham gia thì mỗi thành viên sẽ nhận được nhiều task từ leader, vì vậy việc xử lý task này trên cùng một thời gian là rất khó vì dễ bị đụng code.

Để giải quyết vấn đề này, chúng ta sẽ sử dụng branch của Git, tương ứng với mỗi nhiệm vụ chúng ta sẽ tạo một branh và làm việc trên đó, các branch này sẽ hoạt động riêng lẻ và không ảnh hưởng lẫn nhau.

Tóm lại, branch là những phân nhánh ghi lại luồng thay đổi của lịch sử, các hoạt động trên mỗi branch sẽ không ảnh hưởng lên các branch khác nên có thể tiến hành nhiều thay đổi đồng thời trên một repository giúp giải quyết nhiều nhiệm vụ cùng lúc.

Khi một repository được tạo ra, Git sẽ thiết lập branch mặc định là master, nghĩa là nó sẽ tự động tạo một branch master và mọi hoạt động của ban lúc này đều nằm trên branch master.

  • Github

Đa phần mỗi khi nói đến Git, ta nghĩ tới ngay GitHub, điều này khiến cho không ít người vẫn nhầm lẫn Git vs GitHub là một. Nhưng đó là một nhầm lẫn tai hại, bởi Git như đã giải thích ở trên đó là tên gọi của một mô hình hệ thống, các máy tính có thể clone lại mã nguồn từ một repository, còn GitHub là tên của một công ty cũng cấp dịch vụ máy chủ repository công cộng, mỗi người có thể truy cập vào website trang chủ để tạo tài khoản trên đó và tạo ra kho chứa source của riêng mình khi làm việc.

Các ứng dụng của Git trong lập trình

Một số lợi ích của Git mang đến cho công việc lập trình như:

  • Git dễ sử dụng, an toàn và nhanh chóng.
  • Quản lý source code dễ dàng chuyên nghiệp.
  • Có thể giúp quy trình làm việc code theo nhóm đơn giản hơn rất nhiều bằng việc kết hợp các phân nhánh (branch).
  • Hạn chế được lỗi xảy ra trong quá trình code trong 1 team.
  • Khi gặp lỗi có thể dễ dàng Backup lại phiên bản trước.
  • Code không giới hạn khoảng cách giữa các thành viên trong team, bạn có thể làm việc ở bất cứ đâu vì 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.
  • Dễ dàng trong việc deployment sản phẩm.

Các thuật ngữ quan trọng trong Git

  • Kho lưu trữ (Repository)

Kho lưu trữ (thường được gọi là repo) là một tập hợp các mã nguồn. Repo chứa các commit của dự án hoặc một tập hợp các tham chiếu đến các commit (ví dụ như heads).

  • Commit

Một commit ghi lại một thay đổi hoặc một loạt các thay đổi mà bạn đã thực hiện đối với một file trong repo. Một commit có hash SHA1 duy nhất được sử dụng để theo dõi các file đã thay đổi trong quá khứ.

Git History là danh sách một loạt các commit. Sử dụng lệnh commit kết hợp với lệnh git add để cho git biết những thay đổi của bạn và lưu vào kho lưu trữ repositoty.

  • Branch

Một branch về cơ bản là một tập hợp các mã thay đổi duy nhất với một tên duy nhất. Mỗi repo có thể có một hoặc nhiều branch. Branch chính – branch mà tất cả các thay đổi cuối cùng được merge vào – được gọi là branch master. Đây là phiên bản làm việc chính thức cho dự án của bạn và là phiên bản mà bạn sẽ thấy khi truy cập kho dự án tại github.com/yourname/projectname.

  • Checkout

Chúng ta có thể sử dụng lệnh git checkout để chuyển các branch. Bằng cách nhập git checkout sao tên branch mà bạn muốn chuyển đến hoặc nhập git master để trở về branch chính (master branch).

  • Fork

Fork là một bản sao của kho lưu trữ (repository). Có thể tận dụng các lợi ích của fork để chạy thử nghiệm các thay đổi mà không ảnh hưởng đến kết quả của dự án.

  • Fetch

Sử dụng lệnh git fetch để tìm nạp các bản sao và tải xuống các tệp branch vào máy tính. Có thể sử dụng nó lưu các thay đổi mới nhất vào repository và có thể tìm nạp branch cùng một lúc.

  • Head

Head đại diện cho commit mới nhất của repository mà bạn đang làm việc và commit ở đầu của một branch được gọi là head.

  • Index

Khi sử dụng mà bạn thêm, xóa hoặc thay đổi file thì nó vẫn nằm trong mục index cho đến khi bạn sẵn sàng commit các thay đổi. Bạn dùng lệnh git status để xem nội dung index của bạn.

  • Merge

Merge chính là lệnh git kết hợp với các yêu cầu kéo (pull request) để thêm các thay đổi từ nhánh này sang nhánh khác.

  • Origin

Origin là phiên bản mặc định của repository và origin, đóng vai trò đặc biệt để liên lạc với nhánh chính.

  • Master

Master là nhánh chính của tất cả các repository, nó bao gồm cả những thay đổi gần đây nhất.

  • Pull

Pull request thể hiện cho banjc ác đề xuất thay đổi trong nhánh chính. Khi bạn làm việc với một nhóm, bạn có thể tạo các pull request để yêu cầu người bảo trì kho lưu trữ xem xét các thay đổi và hợp nhất chúng.

  • Push

Lệnh git push dùng để cập nhật các nhánh từ xa với những thay đổi mới nhất mà bạn mới commit.

  • Remote

Remote (kho lưu trữ từ xa) là một bản sao của một chi nhánh. Remote có thể giao tiếp ngược lại với nhánh gốc (origin branch) của chúng và các remote khác trong kho lưu trữ.

  • Rebase

git rebase cho phép bạn phân tách, di chuyển và thoát commit. Và cũng có thể sử dụng nó để kết hợp hai nhánh lại với nhau.

  • Tags

Đối với tags, thì nó sẽ cung cấp cho bạn một cách để theo dõi commit quan trọng.

  • Upstream

Upstream đề cập đến nơi bạn push các thay đổi của mình và thường là các nhánh chính (master branch).

  • Working directory, staging area và local repo

Với mỗi local repo có ba virtual zone khác nhau bao gồm: Working Directory, Staging area và Commit area.

Working directory là nơi các file mới được tạo, file cũ bị xóa hoặc nơi thực hiện các thay đổi đối với các file đã có. Sau khi thay đổi được thực hiện, chúng sẽ được thêm vào Staging area. Do đó, sSaging area đôi khi còn được gọi là index.

Sau khi các thay đổi hoàn tất, Staging area sẽ chứa một hoặc nhiều file cần được commit. Việc tạo một Commit sẽ khiến Git lấy mã mới từ Staging area và đưa Commit vào Repo chính. Sau đó Commit này sau đó được chuyển đến Commit Area.

Git có rất nhiều kiến thức quan trọng cần nắm vững
  • Pull Request

Pull request được tạo ra để đưa những file source code lên 1 host chung nơi mọi người có quyền truy cập sẽ truy cập vào và cùng review, để lại comment trên những file source code đó.

Conflict trong Git là gì?

Conflict nghĩa là xung đột. Trong một hệ thống kiểm soát nguồn như Git, xung đột có thể xảy ra khi hai hoặc nhiều người thay đổi cùng một tệp và xuất hiện tại kho lưu trữ cục bộ của thành viên hoặc kho lưu trữ từ xa Github.

  • Giải quyết conflict

Trong lúc làm dữ án sẽ xảy ra trường hợp nhiều người làm chung 1 file nên sẽ xảy ra conflict và cách giải quyết là sẽ họp với nhau và thống nhất giữ lại phần nào và bỏ những đi phần thừa (chủ yếu là thư viện)

Cách Clone project từ Remote về Local

  • Cần phải Dowload Git về máy
  • Copy đường link Github của dự án cần Clone

Tạo một folder để chứa project chuẩn bị clone, sau đó click chuột phải chọn Git Bash Here

Thực hiện lệnh: git clone + tên đường link Github của dự án cần Clone.

Sau khi hoàn thành các bước ở trên, chúng ta sẽ có 1 project được lấy từ Remote.

Cách tạo 1 Pull Request

Bước 1: Sau khi code xong nhiệm vụ của mình, các bạn lập trình viên hãy push code lên branch của riêng mình và công việc tiếp theo cần làm đó là merge code từ branch cá nhân vào branch chính.

Bước 2: Click vào phần pull request -> Click vào New pull request.

Bước 3: Chọn branch mà bạn muốn, bên trái là branch chính, bên phải là branch riêng của bạn.

Bước 4: Sau khi chọn branch xong -> Click chọn Create pull request.

Bước 5: Đặt tên cho pull request (tên công việc bạn đã làm) -> Click chọn Create pull request.

Bước 6: Click vào mục File Change để xem những file đã thay đổi (lưu ý chỉ nên chỉnh sửa những file có liên quan đến công việc code của mình, nếu thay đổi nhưng file không liên quan, khi merge code sẽ gây ra conflict). Do đó, hãy thực hiện review code (convention, requirement …), kiểm tra và sửa hết các vấn đề trước khi thực hiện Merge pull request.

Bước 7: Sau khi kiểm tra xong thì click vào Merge pull request.

Trên đây là những kiến thức quan trọng liên quan đến Git trong lập trình. Chúc các bạn lập trình viên có thêm các khám phá thú vị trong quá trình áp dụng git vào học tập và làm việc!

Bộ môn Ứng dụng phần mềm
Cao đẳng FPT Mạng cá cược bóng đá Hà Nội

Cùng chuyên mục

Đăng Kí học Fpoly 2023

Bình Luận