Cấu trúc cơ bản của Git
Git hoạt động dựa trên ba trạng thái chính:
- Khu vực làm việc: Nơi bạn chỉnh sửa file.
- Khu vực tạm lưu (staging area): Nơi các thay đổi được chuẩn bị để commit.
Kho chứa địa phương (local repository): Lưu trữ lịch sử thay đổi của dự án.
Một file mới sẽ trải qua các trạng thái sau:
untracked → tracked/staged → committed → modified.
Các lệnh cơ bản
1. Khởi tạo kho chứa
Để khởi tạo một kho chứa Git mới, sử dụng lệnh:
git init
Lệnh này sẽ tạo ra một thư mục .git trong thư mục hiện tại.
2. Thêm file vào kho
Sử dụng lệnh git add để thêm hoặc cập nhật file vào khu vực tạm lưu:
git add tên_file
git add .
Lưu ý rằng git add . sẽ thêm tất cả file đã thay đổi vào staging area.
3. Ghi nhận thay đổi
Sau khi đã thêm file vào staging area, sử dụng lệnh sau để ghi nhận thay đổi:
git commit -m "Thông điệp mô tả"
Nếu muốn bỏ qua bước staging và commit trực tiếp, có thể dùng:
git commit -a -m "Thông điệp"
4. Xem trạng thái
Để xem trạng thái hiện tại của kho chứa:
git status
Lệnh này sẽ hiển thị danh sách các file đã thay đổi nhưng chưa được commit.
5. So sánh thay đổi
Dùng lệnh git diff để so sánh sự khác biệt giữa các phiên bản:
git diff # So sánh giữa working directory và staging area
git diff --cached # So sánh giữa staging area và local repository
6. Loại bỏ file khỏi theo dõi
Để loại bỏ file khỏi theo dõi:
git rm tên_file
Hoặc chỉ loại bỏ khỏi staging area mà vẫn giữ lại trong working directory:
git rm --cached tên_file
7. Di chuyển file
Đổi tên hoặc di chuyển file:
git mv cũ mới
8. Hoàn tác thay đổi
Để hủy bỏ thay đổi chưa được commit:
git checkout -- tên_file
Lưu ý rằng lệnh này sẽ mất đi mọi thay đổi chưa được lưu.
Các tính năng nâng cao
1. Làm việc với remote repository
Thêm kho chứa từ xa:
git remote add origin URL
Gửi thay đổi lên remote:
git push origin master
2. Quản lý branch
Tạo và chuyển đổi branch:
git branch tên_branch_mới
git checkout tên_branch
# Hoặc kết hợp:
git checkout -b tên_branch_mới
Hợp nhất branch:
git merge tên_branch
3. Lưu trạng thái tạm thời
Để lưu trạng thái làm việc hiện tại:
git stash
Phục hồi trạng thái:
git stash apply
# Hoặc tự động xóa sau khi áp dụng:
git stash pop