Chuyển đến nội dung chính

Git Status: Cách theo dõi thay đổi trong dự án một cách tự tin

Tìm hiểu cách dùng lệnh git status để theo dõi trạng thái kho mã của bạn. Hướng dẫn này phù hợp cho người mới và các thực tập sinh đầu sự nghiệp muốn tối ưu hóa quy trình Git.
Đã cập nhật 5 thg 10, 2026  · 15 phút đọc

Khám phá cùng AI

ChatGPTClaudePerplexity

Khi làm việc với một dự án Git phức tạp, bạn rất dễ mất dấu xem tệp nào đã được chỉnh sửa, tệp nào đã được đưa vào khu vực chờ (staged), hoặc tệp nào vẫn chưa được theo dõi. Đó là lúc git status phát huy tác dụng. Lệnh Git thiết yếu này cung cấp một ảnh chụp rõ ràng, toàn diện về trạng thái hiện tại của kho mã—nêu bật các tệp đã thay đổi, nội dung nào sẵn sàng commit và những gì vẫn cần chú ý.

Dù bạn đang xử lý xung đột hợp nhất (merge conflicts), rà soát các thay đổi đã staged, hay đảm bảo không bỏ sót gì trước khi commit, git status mang lại khả năng quan sát cần thiết để bạn luôn gọn gàng, có tổ chức.

Trong hướng dẫn này, tôi sẽ giải thích từng phần trong đầu ra của git status và bàn về các tùy chỉnh nâng cao, giúp bạn kiểm soát tốt hơn quy trình quản lý phiên bản.

Git Status là gì?

Lệnh git status cung cấp tóm tắt theo thời gian thực về trạng thái của Git repository của bạn. Cụ thể, nó so sánh thư mục làm việc (các tệp cục bộ) và khu vực staging (còn gọi là index) với ảnh chụp lần commit gần nhất. Nhờ vậy, bạn có thể thấy tệp nào đã bị chỉnh sửa, thay đổi nào đã được đưa vào khu vực chờ và sẵn sàng commit, cũng như các tệp mới nào vẫn chưa được theo dõi.

Bằng cách chạy git status, các lập trình viên có thể xác minh rằng đúng thay đổi đang được staged hoặc commit, phát hiện các chỉnh sửa bị bỏ sót và tránh đưa vào những cập nhật chưa hoàn thiện. Điều này đặc biệt hữu ích khi quản lý nhiều nhánh hoặc xử lý xung đột hợp nhất, vì nó cung cấp phản hồi chính xác về những gì Git đang theo dõi và những gì không.

Hiểu cách git status phản ánh sự tương tác giữa cây làm việc (working tree), khu vực staging và lịch sử kho mã là chìa khóa để dùng Git hiệu quả và tránh lỗi thường gặp.

Sơ đồ trên minh họa mối quan hệ giữa thư mục làm việc, khu vực staging và kho mã (lịch sử commit)—đồng thời cho thấy git status đóng vai trò thế nào:

  • Thay đổi chưa staged (các tệp đã chỉnh sửa trong thư mục làm việc) sẽ hiển thị là "Changes not staged for commit."
  • Thay đổi đã staged (các tệp được thêm vào index bằng git add) sẽ xuất hiện là "Changes to be committed."
  • Tệp chưa theo dõi (các tệp mới Git chưa từng thấy) cũng được liệt kê, nhắc bạn thêm chúng hoặc bỏ qua.
  • Nếu bạn đang ở giữa quá trình merge, git status cũng sẽ báo về xung đột và các bước cần thực hiện tiếp theo.

Ví dụ đầu ra git status:

$ git status

On branch feature/login
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   src/auth.js

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:   src/utils.js

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        src/new-feature.js

Để có cái nhìn rộng hơn về Git và vai trò của nó trong quản lý phiên bản, hãy xem hướng dẫn Git đầy đủ này.

Cách sử dụng Git Status

Dưới đây là cách tiếp cận từng bước để tận dụng git status hiệu quả trong quy trình làm việc của bạn.

Nếu bạn chưa cấu hình Git, hướng dẫn thiết lập này sẽ hướng dẫn bạn cài đặt và cấu hình ban đầu trên nhiều hệ thống.

Cách dùng cơ bản của git status

  • Mở terminal của bạn:

Dùng terminal hoặc giao diện dòng lệnh bạn ưa thích. Điều này cho phép bạn chạy trực tiếp các lệnh Git và xem trạng thái kho mã của mình theo thời gian thực.

  • Di chuyển tới thư mục dự án:

Dùng lệnh cd để chuyển vào thư mục chứa dự án Git của bạn.

cd /path/to/your/project
  • Chạy git status:

Khi đã ở trong thư mục dự án, hãy chạy lệnh sau.

git status

Như đã thấy ở trên, Git sẽ trả về đầu ra thường bao gồm:

  • Tên nhánh hiện tại.
  • Danh sách thay đổi đã staged và sẵn sàng commit.
  • Danh sách các tệp đã chỉnh sửa nhưng chưa staged.
  • Bất kỳ tệp chưa theo dõi nào—các tệp mới chưa được thêm vào Git.

Dùng định dạng ngắn

Nếu bạn cần ảnh chụp nhanh mà không kèm chi tiết thừa, định dạng ngắn sẽ hữu ích:

git status --short

Chế độ súc tích này liệt kê mỗi tệp trên một dòng với ký hiệu trạng thái, đặc biệt hữu ích khi bạn quét tìm một thay đổi cụ thể hoặc tích hợp lệnh này vào script.

Ví dụ đầu ra:

 M index.html
A  new-script.js
?? temp.txt

Cách diễn giải đầu ra:

  • Ký tự đầu tiên cho biết trạng thái ở khu vực staging.
  • Ký tự thứ hai cho biết trạng thái ở thư mục làm việc.

Mã

Ý nghĩa

M

Đã chỉnh sửa

A

Đã thêm

D

Đã xóa

??

Tệp chưa theo dõi

MM

Đã chỉnh sửa ở cả hai giai đoạn

AM

Đã thêm, sau đó chỉnh sửa

Tìm hiểu tùy chọn -u trong git status

Tùy chọn -u (viết tắt của --untracked-files) cho phép bạn kiểm soát cách hiển thị các tệp chưa theo dõi trong đầu ra, điều này hữu ích trong các dự án có nhiều tệp sinh ra tự động. Ý nghĩa từng chế độ như sau:

  • normal (mặc định)

 Hiển thị các tệp chưa theo dõi ở định dạng tiêu chuẩn, tiết kiệm không gian.  

Ví dụ: 

git status -u normal

Đây là hành vi tiêu chuẩn mà hầu hết lập trình viên thấy khi chạy git status.

  • all

Liệt kê mọi tệp chưa theo dõi—kể cả những tệp vốn bị bỏ qua theo mặc định.  

Ví dụ: 

git status -u all

Chế độ này mang lại khả năng quan sát đầy đủ, hữu ích khi gỡ lỗi vấn đề sinh tệp hoặc rà soát những gì đang bị loại trừ qua .gitignore.

  •  no

Ẩn các tệp chưa theo dõi để bạn chỉ tập trung vào thay đổi của những tệp đã được Git theo dõi.

Ví dụ:

git status -u no

Trong một dự án lớn của tôi—một ứng dụng Node.js với quy trình build phức tạp—đầu ra của git status bị lộn xộn bởi tệp tạm, bộ nhớ đệm và artefact build. Thêm tùy chọn -u no giúp tôi tập trung hoàn toàn vào thay đổi của các tệp đã theo dõi mà không bị xao nhãng bởi tệp tạm hoặc tệp sinh tự động.

Tùy chỉnh đầu ra với --porcelain

Với các tác vụ scripting hoặc tự động hóa, đầu ra có thể dự đoán là điều thiết yếu. Tùy chọn --porcelain cung cấp định dạng sạch, ổn định, có thể cho máy đọc của git status, lý tưởng để dùng trong công cụ tùy chỉnh hoặc quy trình CI/CD:

git status --porcelain

Chế độ này mô phỏng định dạng ngắn (--short) nhưng đảm bảo đầu ra nhất quán giữa các phiên bản và cấu hình Git. Khác với git status mặc định có thể kèm xuống dòng, gợi ý hoặc màu sắc tùy thiết lập người dùng, --porcelain loại bỏ toàn bộ định dạng đó—giúp script có thể phân tích tin cậy.

Các bước tiếp theo sau khi chạy Git Status

Sau khi bạn chạy git status và phân tích đầu ra, đã đến lúc quyết định bước tiếp theo—dù là staging tệp, commit cập nhật hay dọn dẹp thư mục làm việc. Dưới đây là cách tiến hành.

Staging tệp để commit

Staging chuẩn bị các thay đổi để đưa vào commit kế tiếp. Bạn có thể chọn stage từng tệp hoặc tất cả cùng lúc.

  • Stage một tệp cụ thể:

Dùng khi bạn muốn kiểm soát chính xác nội dung được commit.

git add <file-name>
  • Stage tất cả thay đổi:

Bao gồm các tệp đã chỉnh sửa và tệp mới trong thư mục hiện tại.

git add .
  • Chỉ stage thay đổi của các tệp đã theo dõi (loại trừ tệp mới chưa theo dõi):
git add -u

Tôi khuyên bạn nên xem lại các thay đổi bằng git status hoặc git diff thật kỹ trước khi stage để tránh vô tình đưa vào các tệp không mong muốn. Kết hợp git status với lệnh git diff sẽ mang lại góc nhìn sâu hơn về những gì đã thay đổi trong tệp.

Thực hiện commit

Sau khi stage các thay đổi, bước tiếp theo là tạo một commit. Một thông điệp commit rõ ràng, súc tích không chỉ ghi lại điều gì đã thay đổi mà còn vì sao thay đổi ấy được thực hiện—giúp dễ hiểu lịch sử dự án theo thời gian.

git commit -m "Describe your changes here"

Thực hành tốt cho thông điệp commit:

  • Dùng thể mệnh lệnh (ví dụ, “Fix login bug”, không phải “Fixed login bug”).
  • Giữ dòng tóm tắt dưới 50 ký tự khi có thể.
  • Nếu cần, dùng thông điệp nhiều dòng (git commit không kèm -m) để tách phần tóm tắt và giải thích chi tiết.

Tôi nhận ra rằng dành thêm một phút để viết thông điệp commit có ý nghĩa có thể tiết kiệm vô số giờ khi rà soát hoặc gỡ lỗi sau này. Khi thay đổi của bạn đã được xem xét, hãy cân nhắc gộp (squash) các commit để làm gọn lịch sử Git của bạn.

Xử lý các tệp chưa theo dõi

Các tệp chưa theo dõi có thể làm rối đầu ra git status, đặc biệt trong những dự án có artefact build, log hoặc thư mục phụ thuộc. Nếu có những tệp hoặc thư mục bạn không bao giờ định theo dõi, hãy loại trừ chúng bằng cách thêm mẫu vào tệp .gitignore ở thư mục gốc của kho mã.

# Ignore dependency folders and log files
node_modules/
*.log

# Ignore system files
.DS_Store
Thumbs.db

Điều này đảm bảo chỉ những tệp liên quan mới có trong kho mã, giúp đầu ra của git status sạch và tập trung. Khi bạn cần xóa các tệp chưa theo dõi còn sót lại khỏi thư mục làm việc, git clean cũng là một công cụ đáng thử.

Thường xuyên rà soát trạng thái

Thường xuyên chạy git status là một thói quen đơn giản nhưng mạnh mẽ giúp duy trì quy trình phát triển sạch và có kiểm soát. Bạn có thể tránh các lỗi thường gặp như commit thay đổi chưa hoàn chỉnh hoặc bỏ sót tệp chưa theo dõi bằng cách kiểm tra trạng thái thư mục làm việc và khu vực staging theo định kỳ—đặc biệt trước khi commit, chuyển nhánh hoặc merge.

Tôi nay đã đưa bước này vào thói quen hằng ngày, giúp giảm đáng kể lỗi trong lịch sử commit.

Khắc phục sự cố thường gặp với Git Status

Dù đơn giản, đôi khi git status có thể trả về quá nhiều thông tin gây choáng hoặc khó hiểu. Dưới đây là một số vấn đề thường gặp và cách xử lý.

Các tệp chưa theo dõi không mong muốn

Trong các dự án lớn, đặc biệt khi dùng nhiều công cụ build, bạn có thể thấy nhiều tệp mà bạn không hề định theo dõi. Nếu gặp tình trạng này, hãy kiểm tra thiết lập .gitignore và nếu cần, loại chúng khỏi việc theo dõi bằng:

git rm --cached <file-name>

Sau khi cập nhật .gitignore và dùng git rm --cached, hãy chạy git status lại để xác nhận tệp không còn được theo dõi hoặc không còn xuất hiện một cách không cần thiết.

Đầu ra quá tải

Trong các dự án có nhiều tệp—đặc biệt là những dự án sinh log, cache hoặc tài sản tạm thời—đầu ra từ git status có thể trở nên ồn ào, khó quét nhanh. Điều này khiến bạn khó tập trung vào những thay đổi quan trọng cần chú ý.

Trong trường hợp đó, bạn có thể hiển thị tóm tắt gọn gàng, mỗi tệp một dòng:

git status --short

Hoặc ẩn hoàn toàn các tệp chưa theo dõi khỏi đầu ra:

git status -u no

Kết hợp các tùy chọn này giúp git status tập trung và dễ nắm bắt hơn—đặc biệt trong codebase lớn hoặc quy trình tự động.

Kết luận

Tóm lại, git status là công cụ không thể thiếu, mang đến cho bạn cửa sổ theo thời gian thực về “sức khỏe” của kho mã. Bằng cách nắm vững chế độ mặc định, định dạng ngắn và các tùy chọn nâng cao như cờ -u, bạn có thể tinh gọn quy trình Git và tránh những “cạm bẫy” thường gặp. Hãy thử nghiệm các chế độ này trên dự án của bạn và nhận ra cách sự rõ ràng trong quản lý thay đổi sẽ tăng tốc quá trình phát triển.

Nếu bạn mới dùng Git, hiểu git status sẽ càng mạnh mẽ hơn khi đi kèm git init, lệnh khởi tạo kho mã. Nếu chưa, hãy xem Hướng dẫn Git Init của tôi để học cách thiết lập một kho mã từ đầu.

Và nếu bạn muốn đào sâu kỹ năng Git hơn nữa, hãy khám phá các khóa học của DataCamp dưới đây:

  • Intermediate Git – Nâng cao kỹ năng với kỹ thuật branching, merging và giải quyết xung đột.
  • GitHub Foundations – Học cách tích hợp Git với GitHub cho các dự án cộng tác.

Chúc bạn code vui vẻ—và luôn đồng bộ hoàn hảo với kho mã của mình!

FAQs

Git status khác gì với git diff?

Trong khi git status hiển thị tóm tắt các thay đổi, git diff cho thấy sự khác biệt nội dung thực tế giữa các tệp, cung cấp so sánh chi tiết hơn.

Tôi có thể tùy chỉnh đầu ra của git status không?

Có. Bằng cách dùng các tùy chọn như --short, --porcelain và -u, bạn có thể điều chỉnh đầu ra sao cho súc tích hơn hoặc thân thiện với script, tùy nhu cầu.

Sự khác nhau giữa thay đổi đã staged và chưa staged trong Git là gì?

Thay đổi đã staged được thêm vào index và sẵn sàng commit, trong khi thay đổi chưa staged vẫn nằm ở thư mục làm việc và chưa được đánh dấu để commit.

Làm sao để bỏ qua các tệp xuất hiện trong git status?

Bạn có thể thêm mẫu tệp vào tệp .gitignore để ngăn một số tệp (như log hoặc artefact build) xuất hiện là chưa theo dõi trong git status.

Vì sao các tệp chưa theo dõi liên tục xuất hiện trong git status?

Tệp chưa theo dõi là những tệp chưa được thêm vào index của Git. Chúng có thể tiếp tục xuất hiện nếu không được khai báo bỏ qua trong .gitignore hoặc chưa được thêm bằng git add.

Git status giúp ngăn commit tệ như thế nào?

Bằng cách chạy git status trước khi commit, bạn có thể rà soát mọi thay đổi đã staged và chưa staged, đảm bảo không bỏ sót tệp hoặc vô tình commit thứ gì đó chưa hoàn thiện.

Git status có hữu ích khi giải quyết xung đột merge không?

Chắc chắn rồi. git status làm nổi bật các xung đột và hướng dẫn bạn cách giải quyết trước khi hoàn tất việc merge.

Tôi nên dùng git status với tần suất thế nào trong quy trình làm việc?

Thường xuyên! Dùng git status trước khi stage, commit, hoặc chuyển nhánh giúp bạn giữ tổ chức và tránh sai sót tốn kém.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Tôi là một kỹ sư dữ liệu và người xây dựng cộng đồng, làm việc với pipeline dữ liệu, đám mây và công cụ AI, đồng thời viết các hướng dẫn thực hành, tác động cao cho DataCamp và các nhà phát triển mới nổi.

Chủ đề
Git

Tìm hiểu thêm về Git với các khóa học này!

Khóa học

Giới thiệu về Git

2 giờ
105.1K
Khám phá các nguyên tắc cơ bản của Git trong việc kiểm soát phiên bản cho các dự án phần mềm và dữ liệu của quý vị.
Xem chi tiếtRight Arrow
Bắt Đầu Khóa Học
Xem thêmRight Arrow
Liên quan

blog

Claude Opus 4.6: Tính năng, Điểm chuẩn, Bài kiểm tra thực hành và hơn thế nữa

Mô hình mới nhất của Anthropic dẫn đầu ở mã hóa tác tử và lập luận phức tạp. Thêm vào đó, nó có cửa sổ ngữ cảnh 1M.
Matt Crabtree's photo

Matt Crabtree

10 phút

Xem ThêmXem Thêm