NHỮNG LỆNH PHỔ BIẾN TRONG GIT

04/08/2021 54
nhung-lenh-pho-bien-trong-Git (1)
CODEWELL

Bài viết này giới thiệu khái quát về Git và hướng dẫn những câu lệnh cơ bản thường được sử dụng. Hi vọng những kiến thức về Git mà CO-WELL chia sẻ dưới đây sẽ giúp ích cho những bạn mới bắt đầu tìm hiểu và sử dụng.

1. Git là gì?

Git (Distributed Version Control System – DVCS) là một hệ thống quản lý phiên bản phân tán phổ biến nhất hiện nay. Việc quản lý code và làm việc nhóm của lập trình viên trở nên ưu việt hơn vì ngoài việc cung cấp kho lưu trữ (repository) riêng, Git còn có khả năng phân nhánh (branch).

 

2. Git hoạt động như thế nào?

Cách Git ghi về dữ liệu của nó chính là sự khác biệt giữa Git và các hệ thống quản lý phiên bản khác:

  • Thay vì lưu trữ thông tin dưới dạng danh sách các thay đổi dựa trên file, Git coi thông tin được lưu trữ là một tập hợp các snapshot – ảnh chụp toàn bộ nội dung tất cả các file tại cùng thời điểm. Mỗi khi “commit”, Git sẽ chụp và tạo ra một snapshot cùng một tham chiếu tới snapshot đó. Nếu các tệp không thay đổi, Git sẽ không lưu trữ lại file trước đó mà nó đã lưu trữ.
Git-hoat-dong-nhu-the-nao
Image source: Stackoverflow
  • Thường có rất nhiều lập trình viên cùng làm việc song song cùng một dự án, vì thế nên việc sử dụng một hệ thống kiểm soát phiên bản như Git là cần thiết để đảm bảo không có xung đột code giữa các lập trình viên.

3. Một số câu lệnh Git cơ bản

3.1. Git init

Sau khi truy cập một thư mục, sử dụng câu lệnh git init để khởi tạo một local repository mới. Một thư mục con (ẩn) tên .git được tạo ra sau khi chạy lệnh, thư mục này chứa tất cả thông tin mô tả cho kho chứa dự án (Repo) mới – những thông tin này gọi là metadata gồm các thư mục như objects, refs …

Sau lệnh này bạn có một Repo ở local và bắt đầu thực thi được các lệnh khác của Git.

3.2. Git add

Sau khi thêm nội dung cho file hiện hành, trở lại terminal và sử dụng câu lệnh git add để thực hiện đánh chỉ mục (index) tức là thực hiện lưu ảnh snapshot tất cả các thông tin thay đổi, chuẩn bị cho lần commit tiếp theo.

Các snapshot được lưu ở khu vực gọi là staging (sắp xếp, chuẩn bị).

3.3. Git commit

Sau khi thực hiện lưu ảnh snapshot, sử dụng lệnh git commit để lưu dữ liệu vào hệ thống Git. Lệnh git commit thực hiện lưu vào CSDL Git toàn bộ nội dung chứa trong index (vùng staging) và kèm theo nó là một đoạn text thông tin (log) mô tả sự thay đổi của của commit này so với commit trước. Sau khi commit, con trỏ HEAD tự động dịch chuyển đến commit này.

Lệnh commit cơ bản, kèm tham số -m ghi chú về nội dung commit.

lenh-git-commit (1)

Khi cho tham số -a thì nó tương đương thực hiện lệnh git add để đưa các file đang được giám sát có sự thay đổi vào staging rồi tự động chạy git commit.

lenh-git-commit (2)

3.4. Git status

Sử dụng lệnh git status để biết thông tin trạng thái sửa đổi, thêm mới, xoá các file trước khi thực hiện commit.

lenh-git-status (1)

3.5. Git log

Xem lại lịch sử commit với lệnh git log. Lệnh git log có nhiều tham số để xuất ra, định dạng các thông tin hiện thị theo cách mong muốn. Mặc định, thi hành git log liệt kê các commit theo thứ tự từ mới nhất đến cũ nhất, mỗi commit có các thông tin gồm: mã hash của commit, dòng thông báo, người tạo commit và ngày tạo commit.

Khi số lượng log nhiều, nó hiển thị trước một trang log, sau đó có dấu nhắc chờ lệnh điều hướng, tìm kiếm … Để có trợ giúp về các lệnh này hãy nhấn h tại dấu nhắc lệnh.

3.6. Git branch

Dùng để tạo ra nhánh mới

lenh-git-branch (1)

3.7. Git checkout

Nếu muốn truy cập đến nhánh khác, sử dụng câu lệnh git checkout <tên nhánh>

lenh-git-checkout (1)

Vừa tạo nhánh mới vừa truy cập vào ngay nhánh đó, sử dụng câu lệnh sau:

lenh-git-checkout (2)

3.8. Git merge

Tích hợp các nhánh và các thay đổi từ nhánh này sang nhánh khác. Trước khi thực hiện git merge, cần phải thoát khỏi nhánh muốn thực hiện hợp nhất. Ví dụ: nếu đang làm việc tại nhánh newbranch mà muốn hợp nhất nhánh newbranch vào nhánh master, cần phải thực hiện git checkout master rồi sau đó mới thực hiện git merge newbranch.

lenh-git-merge (1)

3.9. Git rebase

Lệnh git rebase cũng thực hiện gộp các commit từ nhánh này vào nhánh khásc bằng cách xây dựng lại các commit base kế thừa từ nhánh khác. Do vậy các commit tiếp theo sau các commit cơ sở ban đầu của nhánh sẽ được nối tiếp vào.

lenh-git-rebase (1)

Làm việc với remote repository

3.10. Git remote

Để kết nối kho lưu trữ cục bộ với kho lưu trữ từ xa. Một kho lưu trữ từ xa có thể được đặt tên để tránh phải nhớ URL của kho lưu trữ.

lenh-git-remote (1)

3.11. Git clone

Để tạo bản sao làm việc cục bộ của kho lưu trữ từ xa hiện có, hãy sử dụng git clone để sao chép và tải kho lưu trữ về máy tính. Sao chép tương đương với git init khi làm việc với kho lưu trữ từ xa. Git sẽ tạo một thư mục cục bộ với tất cả các tệp và lịch sử kho lưu trữ.

lenh-git-clone (1)

lenh-git-clone (2)
Image source: guides.beanstalkapp.com

3.12. Git pull

Để tải phiên bản mới nhất của kho lưu trữ, hãy chạy git pull. Thao tác này kéo các thay đổi từ kho lưu trữ từ xa sang máy tính cục bộ.

lenh-git-pull (1)

3.13. Git push

Gửi các commit cục bộ đến kho lưu trữ từ xa. git push yêu cầu hai tham số: kho lưu trữ từ xa và tên nhánh.

lenh-git-push (1)

Bạn có thể viết lại lịch sử commit của nhánh đang làm việc, cập nhật toàn bộ nhánh remote là base thì thực hiện lệnh

lenh-git-push (2)

3.14. Git fetch

Lệnh git fetch chỉ tải xuống nội dung từ Remote repository mà không làm thay đổi trạng thái của Local repository (các dữ liệu như commit, các file, refs). Mục đích để theo dõi các commit người khác đã cập nhật lên server, có được những thông tin khác nhau giữa remote và local.

Để tải về thông tin của tất cả các nhánh của remote có tên origin

lenh-git-fetch (1)

Hoặc

lenh-git-fetch (2)

Tải thông tin của một nhánh, ví dụ master của remote origin

lenh-git-fetch (3)

Hi vọng những chia sẻ ở trên sẽ giúp ích cho các bạn trong việc tiếp cận và sử dụng Git cơ bản. Để tìm thấy nhiều bài viết công nghệ thú vị hơn, bạn hãy theo dõi chuyên mục CODEWELL trên website CO-WELL Asia nhé!

 

Hồ Nguyễn Bảo Trân – CO-WELL Asia