Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình

Git "changes not staged for commit" - Giải thích

Trước khi tạo commit, bạn phải thêm file đã thay đổi vào commit đó. Khi bạn chạy lệnh git status trước khi thêm file vào commit, bạn sẽ thấy thông báo changes not staged for commit trong đầu ra của lệnh.

Trong hướng dẫn này, chúng ta sẽ thảo luận thông báo này có nghĩa là gì và tại sao nó quan trọng. Chúng ta sẽ đi qua ví dụ cách bạn có thể chuẩn bị (stage) file cần thêm vào commit.

changes not staged for commit

File trong kho Git có thể bị bỏ qua (ignored), ở khu vực chuẩn bị (staging area), hoặc là phần của commit.

File bị bỏ qua không được bao gồm trong bản ghi kho Git. File trong khu vực chuẩn bị là những file sẽ được thêm vào commit tiếp theo.

Khu vực chuẩn bị quan trọng vì nó cho phép bạn chọn file nào nên và không nên thêm vào commit. Bạn có thể thêm hoặc xóa file từ khu vực chuẩn bị bất kỳ lúc nào trước khi tạo commit.

Điều này có nghĩa là khu vực chuẩn bị giống như không gian phân loại (triage space). Nếu bạn nhận ra file bổ sung cần thêm vào commit, bạn có thể thêm vào staging. Sau đó, khi chắc chắn đã thêm tất cả thay đổi vào khu vực chuẩn bị, bạn có thể tạo commit.

Ví dụ Tình huống

Để nhận thông báo này, chúng ta trước phải thay đổi file trong kho Git. Giả sử chúng ta có kho Git với file trống gọi là README.md. Chúng ta sẽ thay đổi nội dung để hiển thị:

# Example Repo

Chúng ta đã thay đổi file trong kho. Tiếp theo, chúng ta sẽ chạy lệnh git status để xem tóm tắt tất cả file đã thay đổi:

git status

Hãy xem lệnh này hiển thị gì:

On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md

Dòng lệnh Git cho chúng ta biết chúng ta đang xem nhánh master và nhánh hiện tại cập nhật với nhánh từ xa. Chúng ta đã thay đổi một file: README.md. File này chưa được thêm vào khu vực chuẩn bị hoặc commit. Thư mục làm việc bị sửa đổi.

Để làm thông báo này biến mất, chúng ta phải thêm file README.md vào khu vực chuẩn bị. Chúng ta có thể làm điều này dùng lệnh git add:

git add README.md

Lệnh này cho phép chúng ta chọn lọc file để thêm vào commit. Tiếp theo, chúng ta có thể tạo commit với file đã thay đổi hiện ở khu vực chuẩn bị. Hãy chạy git commit để tạo commit:

git commit -m "docs: Update README.md"

Điều này sẽ tạo bản ghi trạng thái hiện tại của kho với tất cả thay đổi chúng ta thêm vào khu vực chuẩn bị. Nếu bạn làm việc với kho có phiên bản từ xa, bạn có thể muốn đẩy commit lên kho sau khi tạo:

git push

Thay đổi của chúng ta giờ đã được làm cho cả phiên bản cục bộ và từ xa của kho.

Hãy xem git status on branch lại:

On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean

Lệnh cho chúng ta biết không có thay đổi chưa được thêm vào commit hoặc khu vực chuẩn bị. Điều này có nghĩa là chúng ta đã thành công thay đổi kho. Giờ có một commit bổ sung trong kho chứa thay đổi chúng ta làm cho README.md.

Kết luận

Thông báo "changes not staged for commit" hiện khi bạn chạy lệnh "git status" và có file đã thay đổi nhưng chưa thêm vào khu vực chuẩn bị.

Đây không phải thông báo lỗi, mà là thông báo bạn đã thay đổi file không ở khu vực chuẩn bị hoặc commit. Bạn có thể làm thông báo biến mất bằng cách thêm file vào commit và commit vào kho. Bây giờ bạn có kiến thức cần thiết để sửa lỗi Git này như nhà phát triển chuyên nghiệp!