Git Nâng Cao Khi Làm Việc Thực Tế (Phần 3)
Ở phần 1 và phần 2, chúng ta đã cùng tìm hiểu cách sử dụng Git khi làm việc một mình và khi làm nhóm cơ bản.
Trong blog này, mình muốn chia sẻ những kinh nghiệm thực tế khi dùng Git nâng cao – bao gồm cả những lệnh mình thường xuyên sử dụng và cả cách mình đã xử lý các vấn đề từng gặp phải.
👉 Blog này sẽ được cập nhật thường xuyên khi có thêm tình huống mới. Nếu bạn có thắc mắc hay gặp lỗi “khó nhằn”, đừng ngại comment bên dưới để cùng nhau trao đổi và học hỏi nhé.
Trong phần 3 này, chúng ta sẽ cùng khám phá những lệnh Git nâng cao giúp xử lý công việc hàng ngày gọn gàng, chuyên nghiệp hơn. 🚀
1. .gitignore
– Giữ repo sạch sẽ
.gitignore
là file giúp bạn khai báo những thứ không muốn đưa lên GitHub.
Ví dụ: thư mục node_modules
, file log, file config chứa mật khẩu...
Ví dụ file .gitignore
phổ biến:
# Thư mục node_modules
node_modules/ # File log
*.log # File môi trường
.env
🌟Ghi chú nhỏ về pattern .gitignore
- dir/ → ignore toàn bộ thư mục dir (và các file con trong đó), bất kể nằm ở đâu.
- /dir/ → chỉ ignore thư mục dir ở gốc repo (kèm file con).
- *.log → ignore tất cả file có đuôi .log ở mọi nơi.
- !important.log → không ignore file important.log (dù rule trên có ignore *.log).
Mẹo nhận biết đã đúng file hay chưa trên VScode
Mình có tạo file .env
với nội dung .gitignore như sau:
/.env
Trên VScode sẽ làm mờ file đó đi như hình dưới là đúng file rồi nhé.
2. git stash
– Lưu tạm thay đổi
Đôi khi bạn đang code dở dang ở một branch, nhưng sếp kêu chuyển qua branch khác để fix bug gấp.
Nếu bạn chưa muốn commit mớ code dở này, thì git stash
chính là cứu tinh 🚀.
Cách dùng cơ bản
# Lưu lại toàn bộ thay đổi chưa commit
git stash # Xem danh sách các stash đã lưu
git stash list # Lấy stash gần nhất ra và áp dụng
git stash pop # Áp dụng stash nhưng vẫn giữ trong danh sách
git stash apply
Ví dụ thực tế
Bạn đang ở branch feature/login
và code dở:
git stash # Lưu lại code hiện tại của bạn
git checkout hotfix/payment-bug
Fix xong bug, commit -> push
git checkout feature/login
git stash pop # Lấy lại code dở để làm tiếp
Một số lệnh hay với stash
git stash save "Mô tả nhanh"
→ đặt tên cho stash.git stash drop stash@{0}
→ xoá stash cụ thể.git stash clear
→ xoá toàn bộ stash.git stash -p
→ chỉ stash những thay đổi bạn chọn (từng file/từng hunk).
Tóm lại: stash giống như cất đồ vào tủ tạm thời, khi cần thì lôi ra dùng tiếp, rất tiện trong môi trường thực tế.
3. git reset
– Quay ngược commit (cẩn thận khi dùng)
Đôi khi bạn commit nhầm hoặc có vài chỉnh sửa chỉ để test thử, sau đó quên mất ở đâu.
Khi git pull
về thì báo xung đột, nhưng phần test đó cũng không quan trọng → lúc này git reset
là giải pháp nhanh để quay lại trạng thái ổn định.
Tuy nhiên, lệnh này ảnh hưởng trực tiếp tới lịch sử commit, nên cần hiểu kỹ trước khi dùng.
🔎 Các tình huống thực tế hay dùng git reset
-
Commit nhầm file test/nháp
- Bạn đang test nhanh, commit luôn cả mấy file
test.py
hoặcdebug.log
. - Sau đó nhận ra không cần chúng nữa → dùng:
git reset --soft HEAD~1 # Quay lại trước commit đó git restore test.py # Loại bỏ file test git commit -m "Commit lại, bỏ file test"
- Bạn đang test nhanh, commit luôn cả mấy file
-
Lỡ
git add .
quá tay- Bạn chỉ muốn add một file, nhưng gõ
git add .
→ tất cả file thay đổi bị add vào staging. - Giải pháp:
git reset # Gỡ toàn bộ khỏi staging git add file_cần_commit # Add lại file cần thiết
- Bạn chỉ muốn add một file, nhưng gõ
-
Pull về bị conflict do code test không quan trọng
- Bạn chỉnh vài dòng để test, pull code mới về thì conflict với branch
main
. - Vì code test không quan trọng, bạn bỏ hết và quay lại trạng thái như
main
:git fetch origin git reset --hard origin/main
- Bạn chỉnh vài dòng để test, pull code mới về thì conflict với branch
⚠️ Lưu ý quan trọng:
Chỉ nên dùnggit reset
cho commit chưa push.
Nếu đã push lên remote (GitHub/GitLab), hãy cân nhắc dùnggit revert
thay vì reset để không phá lịch sử chung.
4. git revert
– Đảo ngược commit an toàn
Nếu git reset
giống như “quay ngược thời gian và xoá commit cũ”,
thì git revert
giống như tạo thêm một commit mới để huỷ hiệu ứng commit trước đó.
👉 Điểm mạnh: an toàn khi làm việc nhóm vì không xoá lịch sử chung.
Ví dụ thực tế
-
Commit nhầm file
.env
đã push- Bạn push commit chứa
.env
lên GitHub. - Không thể
reset
(vì sẽ làm rối lịch sử của team). - Giải pháp:
→ Git sẽ tạo ra một commit mới đảo ngược thay đổi trong commit vừa rồi.git revert HEAD
- Bạn push commit chứa
-
Revert một commit cụ thể
- Muốn bỏ commit có ID
abc123
:git revert abc123
Cách xem ID (SHA) của commit trong Git
- Xem nhanh lịch sử với
--oneline
Hiển thị danh sách commit với SHA rút gọn và message:
git log --oneline
output example:
Bạn chọn commit mình muốn
revert
và dùng lệnh ở trên nhé! - Muốn bỏ commit có ID
So sánh nhanh với reset
-
git reset
- Quay ngược, xoá commit.
- Chỉ an toàn khi chưa push.
- Thường dùng để chỉnh sửa lại lịch sử cá nhân.
-
git revert
- Không xoá gì cả, chỉ thêm commit mới “đảo ngược”.
- An toàn khi đã push và team đang cùng làm việc.
👉 Tóm lại:
Nếu lỡ commit nhầm nhưng chưa push → dùngreset
.
Nếu commit đã push chung cho team → dùngrevert
để sửa mà không phá repo.
🙏 Lời cảm ơn
Cảm ơn bạn đã dành thời gian đọc đến cuối blog này.
Hy vọng những chia sẻ trên sẽ giúp bạn sử dụng Git một cách chuyên nghiệp hơn và tự tin xử lý các tình huống thực tế.
👉 Nếu thấy bài viết hữu ích, hãy chia sẻ cho bạn bè hoặc đồng nghiệp để cùng học hỏi.
👉 Và đừng quên để lại comment bên dưới nếu bạn có thắc mắc hay mẹo Git hay ho khác. Mình sẽ rất vui được thảo luận và cập nhật thêm vào blog cho mọi người cùng tham khảo. 🚀
Hẹn gặp lại bạn ở Phần 4: Git & CI/CD với GitHub Actions!