+2

GitHub 1001 cho sinh viên IT: Dễ Như Ăn Phở – Dù Làm Một Mình Hay Làm Nhóm (P3)

Git Nâng Cao Khi Làm Việc Thực Tế (Phần 3)

phần 1phầ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

  1. dir/ → ignore toàn bộ thư mục dir (và các file con trong đó), bất kể nằm ở đâu.
  2. /dir/ → chỉ ignore thư mục dir ở gốc repo (kèm file con).
  3. *.log → ignore tất cả file có đuôi .log ở mọi nơi.
  4. !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é.

image.png

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

  1. git stash save "Mô tả nhanh"đặt tên cho stash.
  2. git stash drop stash@{0}xoá stash cụ thể.
  3. git stash clearxoá toàn bộ stash.
  4. 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

  1. Commit nhầm file test/nháp

    • Bạn đang test nhanh, commit luôn cả mấy file test.py hoặc debug.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"
      
  2. 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
      
  3. 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
      

⚠️ Lưu ý quan trọng:
Chỉ nên dùng git reset cho commit chưa push.
Nếu đã push lên remote (GitHub/GitLab), hãy cân nhắc dùng git 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ế

  1. 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 revert HEAD
      
      → Git sẽ tạo ra một commit mới đảo ngược thay đổi trong commit vừa rồi.
  2. 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

    1. 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: image.png

    Bạn chọn commit mình muốn revert và dùng lệnh ở trên nhé!

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ùng reset.
Nếu commit đã push chung cho team → dùng revert để 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ơntự 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!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí