メインコンテンツまでスキップ

Cơ bản về Git

Git là gì?

Git một hệ thống quản lý phiên bản (Version Control System - VCS) được sử dụng rộng rãi trong quản lý mã nguồn và phát triển phần mềm. Git cung cấp cho các lập trình viên một kho lưu trữ (repository) chứa toàn bộ lịch sử thay đổi của hệ thống.

Git được tạo ra bởi Linus Torvalds vào năm 2005, và nhanh chóng trở thành một trong những công cụ quản lý phiên bản phổ biến và quan trọng nhất trên toàn cầu.

Một số dịch vụ lưu trữ Git tốt nhất hiện nay có thể kể đến như Github, Gitlab, Bitbucket...

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

Git coi thông tin được lưu trữ là một tập hợp các snapshots – ảnh chụp toàn bộ nội dung tất cả các file tại một thời điểm nhất định.

Khi người dùng đưa ra lệnh, Git sẽ "chụp" lại thông tin và tạo ra một snapshot cùng một tham chiếu tới snapshot đó. Để đạt hiệu quả cao, Git chỉ lưu trữ file khi file có sự thay đổi, các file không thay đổi, Git sẽ chỉ lưu trữ lại một liên kết đến file ở phiên bản trước đó mà nó đã lưu trữ.

Với cách hoạt động này, Git sẽ giúp cho việc lưu trữ dễ dàng hơn và không tốn nhiều thời gian để xem xét lại các thông tin không cần thiết.

Vì sao sử dụng Git?

  • Git giúp theo dõi thay đổi mã nguồn theo thời gian, kiểm soát lịch sử sửa đổi.
  • Git cho phép nhiều nhà phát triển cùng làm việc trên một dự án, giúp hạn chế xung đột khi họ cùng sửa mã nguồn.
  • Khi gặp lỗi hoặc thay đổi không mong muốn, Git cho phép quay trở lại (revert) phiên bản trước đó.
  • Git cho phép nhà phát triển làm việc ngoại tuyến (offline), làm việc từ xa hoặc phân tán.
  • Git là mã nguồn mở, được sử dụng rộng rãi và miễn phí.
  • Git giúp việc phân chia và sắp xếp các công việc dễ dàng, hiệu quả hơn, có thể thực hiện nhiều công việc cùng một lúc.

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

Repository (Kho lưu trữ)

Repository (hay còn gọi là Repo) là nơi chứa tất cả mã nguồn và lịch sử thay đổi của dự án.
Repository có 2 loại:

  • Remote Repository: Đặt trên git server, có khả năng chia sẻ với nhiều người.
  • Local Repository: Đặt trên máy cá nhân, dành riêng cho người dùng.

Branch (nhánh)

Branch là một khu vực làm việc độc lập của repository.
Khi tạo repository, một nhánh chính (master/main) sẽ được tạo sẵn. Tương ứng với mỗi nhiệm vụ chúng ta sẽ tạo một nhánh con và làm việc trên đó. Những thay đổi trên nhánh con không ảnh hưởng đến nhánh chính, điều này cho phép giải quyết nhiều nhiệm vụ cùng một lúc trên cùng một kho chứa mà ít có xung đột lẫn nhau. Ta cũng có thể kết hợp (merge) các nhánh lại với nhau.

Tương tự Repository, Branch cũng chia thành 2 loại:

  • Remote Branch: Lưu trên git server, có thể chia sẻ.
  • Local branch: Lưu trên máy cá nhân, có thể liên kết với remote branch hoặc không.

Một số thuật ngữ khác

Thuật ngữMô tả
CommitMột bản ghi lưu trữ các thay đổi đã thực hiện trong repo, được đánh dấu với thông tin và mã xác nhận.
Check outChuyển đổi giữa các nhánh hoặc commit cụ thể.
FetchLấy thông tin mới từ remote repository nhưng không tự động kết hợp với local repository.
ForkTạo một bản sao của một repository public trong tài khoản git của bạn để đóng góp hoặc sửa lỗi.
HeadTrỏ đến commit hiện tại trong nhánh làm việc và thường là commit cuối cùng trên nhánh.
IndexVùng trung gian giữa working directory và repository, nơi tập tin chờ được commit.
MasterTên mặc định của nhánh chính trong một repository.
MergeKết hợp các thay đổi từ nhánh khác vào nhánh hiện tại.
OriginTên mặc định của remote repository khi bạn clone hoặc sao chép repository.
PullKết hợp các thay đổi từ remote repository vào local repository và tự động kết hợp.
PushĐẩy các thay đổi từ local repository lên remote repository.
RebaseDi chuyển chuỗi các commit hiện tại lên đầu của một nhánh khác để tạo lịch sử tuyến tính hơn.
RemoteRemote là một bản sao của repository trên máy tính hoặc máy chủ khác.
StashLưu trữ tạm thời các thay đổi chưa commit để chuyển qua công việc khác.
TagsĐánh dấu một điểm cụ thể trong lịch sử commit để dễ dàng truy cập sau này.
UpstreamRemote repository mà bạn sao chép từ đó hoặc theo dõi để cập nhật các thay đổi.

Các lệnh git cơ bản

LệnhMô tảCú pháp
git configCấu hình thông tin người dùng hoặc repository.git config [–-global] user.name "Name"
git config [–-global] user.email "Email"
git initKhởi tạo ra một repository mới trong thư mục hiện tại.git init
git cloneSao chép một repository từ remote về máy local.git clone remote_repository_URL
git statusHiển thị trạng thái của các tập tin trong working directory và staging area.git status
git addĐưa các tập tin từ working directory vào staging area.git add tên_tập_tin
# thêm tất cả các files
git add .
git commitTạo một commit từ các tập tin trong staging area.git commit -m “commit message”
git pushĐẩy các commit từ local repository lên remote repository.git push remote_name branch_name
git pullKéo các commit mới từ remote repository về local repository.git pull remote_name branch_name
git branchQuản lý các nhánh có trong repository.# xem danh sách nhánh
git branch
# tạo nhánh
git branch tên_nhánh
# xóa nhánh
git branch -d tên_nhánh
git checkoutChuyển đổi giữa các nhánh hoặc commit cụ thể.git checkout tên_nhánh
git checkout commit_hash
git stashTạm thời lưu trữ các thay đổi chưa commit để chuyển sang công việc khác.git stash
# áp dụng các thay đổi tạm thời
git stash apply
git mergeKết hợp các thay đổi từ một nhánh khác vào nhánh hiện tại.git merge tên_nhánh
git resetĐặt lại trạng thái của HEAD hoặc staging area theo commit cụ thể.# giữ lại thay đổi trong staging area
git reset –soft commit_hash
# hủy bỏ thay đổi
git reset –hard commit_hash
git remoteQuản lý các remote repository đã được liên kết với local repository.git remote add remote_name URL_remote
# hiển thị danh sách các remote
git remote -v

Những lưu ý khi làm việc với Git là gì?

Để sử dụng Git hiệu quả, bạn cần lưu ý:

  • Sử dụng Git Cheat Sheets để nhớ các lệnh
  • Commit liên tục và thường xuyên
  • Kiểm tra trước khi commit Git
  • Viết ghi chú rõ ràng khi commit
  • Mỗi nhiệm vụ khác nhau nên tạo và làm trên những branch khách nhau.

Tham khảo