Git là một công cụ mạnh mẽ, nhưng để bắt đầu, bạn chỉ cần nắm vững một số lệnh Git cơ bản. Bài viết này sẽ cung cấp một hướng dẫn dễ hiểu nhất về các lệnh Git quan trọng nhất, giúp bạn nhanh chóng làm quen và sử dụng Git hiệu quả trong công việc hàng ngày. Các lệnh được sắp xếp theo từng nhóm chức năng, kèm theo ví dụ minh họa và giải thích chi tiết.
Danh sách chọn nhanh các lệnh Git cơ bản (Mục lục):
- Khởi tạo và Clone Repository
- Cấu hình Git
- Xem trạng thái và lịch sử
- Staging và Commit thay đổi
- Làm việc với Nhánh (Branch)
- Làm việc với Remote Repository
1. Khởi tạo và Clone Repository
Nhóm lệnh này dùng để bắt đầu một dự án Git mới hoặc sao chép một dự án đã có từ xa về máy của bạn.
git init
Mô tả: Khởi tạo một local repository Git mới trong thư mục hiện tại. Lệnh này sẽ tạo ra một thư mục ẩn .git
, là nơi Git lưu trữ tất cả thông tin về phiên bản, lịch sử dự án.
Ví dụ:
cd ten-thu-muc-du-an-cua-ban
git init
Giải thích:
- Đầu tiên, bạn dùng lệnh
cd
(change directory) để di chuyển vào thư mục dự án của mình. - Sau đó, lệnh
git init
sẽ biến thư mục này thành một Git repository. - Bạn sẽ thấy thông báo
Initialized empty Git repository
, xác nhận rằng Git đã được khởi tạo thành công.
git clone [URL repository]
Mô tả: Clone (sao chép) một remote repository (kho lưu trữ từ xa) về máy tính cục bộ của bạn. Thường dùng để tải code dự án từ GitHub, GitLab, Bitbucket về máy để bắt đầu làm việc.
Ví dụ:
git clone https://github.com/ten-nguoi-dung/ten-repository.git
Giải thích:
- Lệnh
git clone
sẽ tải toàn bộ repository từ địa chỉ URL bạn cung cấp (ví dụ: URL từ GitHub). - Git sẽ tạo một thư mục mới có tên giống như tên repository (trong ví dụ là
ten-repository
) và tải code dự án vào thư mục đó. - Sau khi clone xong, bạn đã có một bản sao đầy đủ của dự án trên máy tính của mình.
2. Cấu hình Git
Nhóm lệnh này dùng để thiết lập các thông tin cá nhân của bạn cho Git, như tên và email, để Git có thể ghi nhận ai là người thực hiện các thay đổi.
git config –global user.name “[Tên của bạn]”
Mô tả: Cấu hình tên người dùng của bạn một cách toàn cục (global). Tên này sẽ được sử dụng cho tất cả các commit bạn thực hiện trên máy tính này.
Ví dụ:
git config --global user.name "Nguyen Van A"
Giải thích:
- Lệnh
git config --global user.name
thiết lập tên người dùng. - Thay
"Nguyen Van A"
bằng tên thật của bạn. --global
nghĩa là cấu hình này áp dụng cho mọi Git repository trên máy tính của bạn.
git config –global user.email “[email protected]”
Mô tả: Cấu hình địa chỉ email của bạn một cách toàn cục. Email này cũng sẽ được sử dụng cho các commit của bạn.
Ví dụ:
git config --global user.email "[email protected]"
Giải thích:
- Lệnh
git config --global user.email
thiết lập email người dùng. - Thay
"[email protected]"
bằng địa chỉ email thật của bạn. - Tương tự như trên,
--global
nghĩa là cấu hình này áp dụng toàn cục.
git config –list
Mô tả: Hiển thị danh sách tất cả các cấu hình Git hiện tại của bạn, bao gồm tên, email, và nhiều cấu hình khác.
Ví dụ:
git config --list
Giải thích:
- Lệnh
git config --list
sẽ in ra một danh sách các cấu hình Git mà bạn đã thiết lập. - Bạn có thể kiểm tra lại xem tên và email của mình đã được cấu hình đúng chưa.
3. Xem trạng thái và lịch sử
Nhóm lệnh này giúp bạn theo dõi tình trạng hiện tại của dự án và xem lại lịch sử các thay đổi đã thực hiện.
git status
Mô tả: Hiển thị trạng thái hiện tại của working directory (thư mục làm việc) và staging area (vùng chờ). Cho bạn biết những file nào đã được thay đổi, file nào đã được staging để chuẩn bị commit, và file nào chưa được Git theo dõi.
Ví dụ:
git status
Giải thích:
- Lệnh
git status
sẽ cho bạn biết:- Bạn đang ở branch nào (ví dụ:
On branch main
). - Các file đã thay đổi nhưng chưa được staging (
Changes not staged for commit
). - Các file đã được staging và sẵn sàng commit (
Changes to be committed
). - Các file mới chưa được Git theo dõi (
Untracked files
).
- Bạn đang ở branch nào (ví dụ:
- Đây là lệnh bạn sẽ dùng thường xuyên để kiểm tra xem mình đang ở đâu và có những thay đổi gì.
git log
Mô tả: Hiển thị lịch sử commit của repository. Bạn có thể xem danh sách các commit đã thực hiện, thông tin tác giả, thời gian commit, và thông điệp commit.
Ví dụ:
git log
Giải thích:
- Lệnh
git log
sẽ hiển thị lịch sử commit theo thứ tự commit mới nhất ở trên cùng. - Mỗi commit sẽ có thông tin về:
- commit [hash]: Mã hash SHA-1 của commit (định danh duy nhất).
- Author: Tên và email của người commit.
- Date: Thời gian commit.
- Thông điệp commit: Dòng mô tả thay đổi trong commit.
- Bạn có thể dùng các tùy chọn khác với
git log
để xem lịch sử theo nhiều cách khác nhau (ví dụ:git log --oneline
để xem ngắn gọn hơn).
4. Staging và Commit thay đổi
Nhóm lệnh này dùng để chuẩn bị các thay đổi của bạn (staging) và sau đó lưu các thay đổi đó vào lịch sử dự án (commit).
git add [tên file]
Mô tả: Staging file, tức là thêm file hoặc các thay đổi trong file vào staging area. Staging area là vùng trung gian để bạn chọn lọc những thay đổi nào sẽ được đưa vào commit tiếp theo.
Ví dụ:
git add index.html
git add style.css script.js
git add . # Thêm tất cả các thay đổi trong thư mục hiện tại và thư mục con
Giải thích:
git add index.html
: Chỉ staging fileindex.html
.git add style.css script.js
: Staging hai filestyle.css
vàscript.js
.git add .
: Staging tất cả các file đã thay đổi, file mới, và file đã xóa trong thư mục hiện tại và các thư mục con. Dấu.
đại diện cho thư mục hiện tại.- Sau khi staging, các file này sẽ sẵn sàng để được commit.
git commit -m “[Thông điệp commit]”
Mô tả: Commit các thay đổi đã được staging vào local repository. Mỗi commit là một bản ghi lại trạng thái của dự án tại một thời điểm, kèm theo một thông điệp commit mô tả các thay đổi bạn đã thực hiện.
Ví dụ:
git commit -m "feat: Thêm chức năng đăng nhập cơ bản"
git commit -m "fix: Sửa lỗi hiển thị trên trang chủ"
Giải thích:
git commit -m
: Lệnh commit với tùy chọn-m
(message) để bạn viết thông điệp commit ngay trên dòng lệnh."feat: Thêm chức năng đăng nhập cơ bản"
: Đây là thông điệp commit. Nên viết thông điệp commit rõ ràng, ngắn gọn, mô tả mục đích của commit. Nên theo một số quy ước về thông điệp commit (ví dụ: Conventional Commits) để lịch sử commit dễ đọc và dễ quản lý hơn.- Sau khi commit, các thay đổi của bạn đã được lưu vào lịch sử dự án trong local repository.
5. Làm việc với Nhánh (Branch)
Nhóm lệnh này giúp bạn tạo nhánh mới, chuyển đổi giữa các nhánh, và hợp nhất các nhánh lại với nhau.
git branch
Mô tả: Hiển thị danh sách các nhánh hiện có trong local repository của bạn. Nhánh hiện tại bạn đang làm việc sẽ được đánh dấu bằng dấu *
.
Ví dụ:
git branch
Giải thích:
- Lệnh
git branch
sẽ in ra danh sách các nhánh. - Nhánh hiện tại sẽ có dấu
*
ở đầu dòng (ví dụ:* main
). - Bạn có thể dùng lệnh này để xem mình đang ở nhánh nào và có những nhánh nào khác trong dự án.
git branch [tên nhánh mới]
Mô tả: Tạo một nhánh mới với tên bạn chỉ định. Nhánh mới này sẽ được tạo ra từ commit hiện tại bạn đang đứng.
Ví dụ:
git branch feature-gio-hang
Giải thích:
git branch feature-gio-hang
: Tạo một nhánh mới có tên làfeature-gio-hang
.- Sau khi lệnh này chạy, bạn sẽ có một nhánh mới, nhưng bạn vẫn đang ở nhánh cũ (ví dụ:
main
). Để chuyển sang nhánh mới, bạn cần dùng lệnhgit checkout
.
git checkout [tên nhánh]
Mô tả: Chuyển sang làm việc trên một nhánh khác đã có. Lệnh này sẽ thay đổi working directory của bạn để phản ánh trạng thái của nhánh bạn chọn.
Ví dụ:
git checkout feature-gio-hang
Giải thích:
git checkout feature-gio-hang
: Chuyển sang nhánhfeature-gio-hang
.- Bạn sẽ thấy thông báo
Switched to branch 'feature-gio-hang'
, xác nhận bạn đã chuyển nhánh thành công. - Từ bây giờ, mọi thay đổi bạn thực hiện sẽ thuộc về nhánh
feature-gio-hang
, cho đến khi bạn chuyển sang nhánh khác.
git checkout -b [tên nhánh mới]
Mô tả: Tạo một nhánh mới và đồng thời chuyển sang làm việc trên nhánh đó (kết hợp cả tạo nhánh và checkout). Đây là cách thường dùng để bắt đầu phát triển một tính năng mới.
Ví dụ:
git checkout -b feature-tim-kiem
Giải thích:
git checkout -b feature-tim-kiem
: Tạo nhánh mới tênfeature-tim-kiem
và chuyển sang nhánh đó.- Tùy chọn
-b
(branch) kết hợp cả việc tạo nhánh và checkout trong một lệnh. - Bạn sẽ thấy thông báo
Switched to a new branch 'feature-tim-kiem'
, cho biết bạn đã tạo và chuyển nhánh thành công.
git merge [tên nhánh]
Mô tả: Hợp nhất (merge) các thay đổi từ một nhánh khác (ví dụ: feature-gio-hang
) vào nhánh hiện tại bạn đang đứng (ví dụ: main
). Thường dùng để tích hợp tính năng đã phát triển xong từ nhánh feature vào nhánh chính.
Ví dụ:
git checkout main # Chuyển sang nhánh main (nhánh bạn muốn hợp nhất vào)
git merge feature-gio-hang # Hợp nhất nhánh feature-gio-hang vào nhánh main
Giải thích:
- Đầu tiên, bạn cần
git checkout main
để chuyển sang nhánh mà bạn muốn hợp nhất vào (thường làmain
). - Sau đó,
git merge feature-gio-hang
sẽ hợp nhất các thay đổi từ nhánhfeature-gio-hang
vào nhánhmain
. - Nếu không có xung đột (conflict), Git sẽ tự động hợp nhất. Nếu có xung đột, bạn cần giải quyết xung đột trước khi hoàn tất merge.
6. Làm việc với Remote Repository
Nhóm lệnh này dùng để tương tác với remote repository, giúp bạn chia sẻ code với người khác, sao lưu dự án, và cộng tác làm việc nhóm.
git remote add origin [URL repository]
Mô tả: Thêm một remote repository vào local repository của bạn. Thường dùng để liên kết local repository với một repository trên GitHub, GitLab, Bitbucket. Tên origin
là tên thường được sử dụng cho remote repository chính.
Ví dụ:
git remote add origin https://github.com/ten-nguoi-dung/ten-repository.git
Giải thích:
git remote add origin
: Lệnh thêm remote repository với tênorigin
.https://github.com/ten-nguoi-dung/ten-repository.git
: URL của remote repository (ví dụ: từ GitHub). Thay bằng URL repository của bạn.- Sau khi thêm remote, bạn có thể dùng tên
origin
để tham chiếu đến remote repository này trong các lệnh Git khác (ví dụ:git push origin main
).
git remote -v
Mô tả: Hiển thị danh sách các remote repository đã được cấu hình cho local repository của bạn, kèm theo URL của chúng.
Ví dụ:
git remote -v
Giải thích:
- Lệnh
git remote -v
sẽ in ra danh sách các remote. - Bạn có thể kiểm tra xem remote
origin
đã được thêm đúng chưa, và URL có chính xác không. -v
(verbose) tùy chọn để hiển thị thông tin chi tiết hơn, bao gồm cả URL.
git push origin [tên nhánh]
Mô tả: Push (đẩy) các commit từ local repository lên remote repository. Thường dùng để chia sẻ code của bạn với người khác, hoặc sao lưu code lên server.
Ví dụ:
git push origin main
Giải thích:
git push origin main
: Đẩy nhánhmain
từ local repository lên remote repository có tênorigin
(và cũng lên nhánhmain
trên remote).origin
: Tên của remote repository bạn đã thêm (thường là remote chính).main
: Tên nhánh bạn muốn đẩy lên remote. Bạn có thể đẩy nhánh khác (ví dụ:git push origin feature-gio-hang
).- Sau khi push thành công, code của bạn đã được tải lên remote repository.
git pull origin [tên nhánh]
Mô tả: Pull (kéo) các thay đổi từ remote repository về local repository, và hợp nhất (merge) chúng vào nhánh hiện tại của bạn. Thường dùng để cập nhật code mới nhất từ remote về máy của bạn, đặc biệt khi làm việc nhóm.
Ví dụ:
git pull origin main
Giải thích:
git pull origin main
: Kéo các thay đổi từ nhánhmain
trên remoteorigin
về nhánhmain
trên local, và tự động hợp nhất.origin
: Tên của remote repository.main
: Tên nhánh bạn muốn pull về và hợp nhất.- Lệnh
git pull
thực chất là kết hợp của hai lệnh:git fetch
(tải về) vàgit merge
(hợp nhất). - Dùng lệnh
git pull
thường xuyên để đảm bảo local repository của bạn luôn đồng bộ với remote, đặc biệt khi làm việc nhóm.
Kết luận: Nắm vững các lệnh Git cơ bản để làm chủ quản lý phiên bản
Bài viết này đã giới thiệu các lệnh Git cơ bản nhất mà mọi lập trình viên cần biết. Nắm vững những lệnh này là bước đầu tiên quan trọng để bạn có thể sử dụng Git hiệu quả trong công việc hàng ngày.
Để thực sự thành thạo Git, bạn cần thực hành thường xuyên, thử nghiệm các lệnh, và làm việc với các dự án Git thực tế. Hãy bắt đầu từ những lệnh cơ bản này, và dần dần khám phá thêm các tính năng nâng cao của Git để trở thành một chuyên gia quản lý phiên bản!
Chúc bạn thành công trên hành trình học tập và sử dụng Git!