Giả sử tôi có một tệp có tên a.txt
. Tôi thêm nó vào khu vực dàn dựng, và sau đó tôi sửa đổi nó. Làm thế nào tôi có thể trả lại nó như cũ khi tôi thêm nó?
Câu trả lời:
git checkout a.txt
git restore a.txt
Git cho bạn biết điều này nếu bạn nhập git status
.
Trước Git 2.23:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: a
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: a
#
Bắt đầu từ Git 2.23:
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: a
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: a
--
trạng thái như nói.
git checkout -- a.txt
Câu trả lời khác trên trang này không có --
, và dẫn đến một số nhầm lẫn.
Đây là những gì Git cho bạn biết khi bạn nhập git status
:
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# modified: a
#
# Changed but not updated:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: a
#
Bỏ sắp xếp tệp theo giai đoạn
Hai phần tiếp theo trình bày cách làm việc với các thay đổi về khu vực dàn dựng và thư mục làm việc của bạn. Phần hay là lệnh bạn sử dụng để xác định trạng thái của hai khu vực đó cũng nhắc bạn cách hoàn tác các thay đổi đối với chúng. Ví dụ: giả sử bạn đã thay đổi hai tệp và muốn cam kết chúng dưới dạng hai thay đổi riêng biệt, nhưng bạn vô tình nhập git add * và đặt cả hai tệp. Làm thế nào bạn có thể loại bỏ một trong hai? Lệnh git status nhắc bạn:
$ git add *
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
modified: CONTRIBUTING.md
Ngay bên dưới dòng chữ "Các thay đổi cần được cam kết", nó cho biết sử dụng git reset HEAD ... để loại bỏ. Vì vậy, hãy sử dụng lời khuyên đó để loại bỏ tệp CONTRIBUTING.md:
$ git reset HEAD CONTRIBUTING.md
Unstaged changes after reset:
M CONTRIBUTING.md
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: README.md -> README
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: CONTRIBUTING.md
Lệnh này hơi lạ, nhưng nó hoạt động. Tệp CONTRIBUTING.md được sửa đổi nhưng một lần nữa được bỏ đánh dấu.