Commit và lịch sử
Nội dung bài · 5 mục
- 1.Khái niệm
- 2.Ví dụ
- 3.Thử ngay
- 4.Lỗi hay gặp
- 5.Tóm tắt
Sửa code xong, chạy thấy hỏng, mà không nhớ đã đổi những gì. Hoặc muốn quay lại bản chạy được hôm qua nhưng đã lưu đè mất. Git lưu lại từng mốc thay đổi của project để bạn xem lại hay quay về lúc nào cũng được.
Khái niệm
📸 Commit: một mốc lưu lại nội dung các file của project tại một thời điểm, kèm lời mô tả và tên người tạo.
🛒 Staging area: nơi gom những thay đổi sẽ đi vào commit tiếp theo, thêm vào bằng git add.
🙈 .gitignore: file liệt kê những file, thư mục Git bỏ qua, không bao giờ đưa vào commit.
Một thay đổi đi qua ba chỗ: sửa trong thư mục làm việc, git add vào
staging area, rồi git commit để thành một mốc trong lịch sử.
Ví dụ
Cài Git xong, khai báo tên và email một lần. Git gắn chúng vào mỗi commit:
git config --global user.name "An"
git config --global user.email "an@shop.vn"Mở terminal ở thư mục chứa shop-api, rồi đưa project vào một kho Git:
git init -b main
# mở shop-api/.gitignore, thêm dòng application-dev.properties
git add .
git commit -m "Commit đầu tiên"
git log --onelinegit init -b maintạo kho Git (repository) trong thư mục hiện tại, nhánh chính tênmain.- Project tạo từ start.spring.io đã có sẵn
shop-api/.gitignore, bỏ qua thư mụctarget/do Maven sinh ra khi build. application.propertiesđang chứa mật khẩu Oracle vàjwt.key. Mật khẩu không được commit: chuyển hai dòng này sangapplication-dev.propertiesnhư bài Cấu hình với application.properties, rồi thêm file đó vào.gitignoretrước khigit add.git add .đưa mọi file vào staging area,git commit -mtạo commit kèm lời mô tả.git log --onelinein mỗi commit một dòng: mã commit và lời mô tả.
Thử ngay
Thêm một dòng comment vào cuối PriceCalculator.java, tạo file mới
Notes.txt ở thư mục gốc, rồi chạy:
git statusĐoán trước khi chạy: Git nói gì về hai file này?
Xem kết quả
On branch main
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: shop-api/src/main/java/com/shop/api/PriceCalculator.java
Untracked files:
(use "git add <file>..." to include in what will be committed)
Notes.txt
no changes added to commit (use "git add" and/or "git commit -a")PriceCalculator.java đã có trong commit trước nên là "modified", đã sửa
nhưng chưa git add. Git ghi đường dẫn tính từ thư mục gốc của kho.
Notes.txt là file mới, Git chưa theo dõi nên là "untracked".
Muốn đưa cả hai vào commit tiếp theo thì git add chúng.
Lỗi hay gặp
Commit khi chưa có .gitignore. Project không tạo từ start.spring.io,
hoặc lỡ mất file .gitignore khi chép thư mục. target/ nặng và đổi sau mỗi
lần build, làm lịch sử rối.
# SAI — add hết khi chưa có .gitignore
git init -b main
git add .# ĐÚNG — tạo .gitignore trước khi add
git init -b main
# tạo file .gitignore có dòng target/
git add .Tóm tắt
- Commit là một mốc trạng thái của project, kèm lời mô tả.
- Sửa file,
git addvào staging area, rồigit commit. git statuscho biết file nào đã sửa, file nào mới.git logxem lịch sử.- Có
.gitignoretrước commit đầu tiên, không committarget/và file chứa mật khẩu.
Tự kiểm tra
0/3 câuSửa Product.java và Order.java, chỉ git add Order.java rồi git commit. Commit mới có thay đổi của Product.java không?
git status báo một file là "Untracked". Nghĩa là gì?
Thư mục nào không nên commit trong project Maven?