Tôi có một repo có hai tệp được cho là tôi đã thay đổi cục bộ.
Vì vậy, tôi bị mắc kẹt với điều này:
$ git status
# On branch master
# 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: dir1/foo.aspx
# modified: dir2/foo.aspx
#
no changes added to commit (use "git add" and/or "git commit -a")
Làm git diff
nói rằng toàn bộ nội dung tệp đã thay đổi, ngay cả khi nhìn vào mắt nó dường như không đúng sự thật (dường như có những dải dòng phổ biến mà sự khác biệt dường như không nhìn thấy).
Điều thú vị là tôi không nhớ đã thay đổi cục bộ các tệp này. Repo này được sử dụng với một repo từ xa (riêng tư, tại GitHub.com, FWIW).
Bất kể tôi đã thử gì, tôi không thể hủy những thay đổi cục bộ này. Tôi đã thử tất cả:
$ git checkout -- .
$ git checkout -f
$ git checkout -- dir1/checkout_receipt.aspx
$ git reset --hard HEAD
$ git stash save --keep-index && git stash drop
$ git checkout-index -a -f
Nói cách khác, tôi đã thử mọi thứ được mô tả trong Làm cách nào để loại bỏ các thay đổi chưa phân giai đoạn trong Git? thêm nữa. Nhưng 2 tệp vẫn bị kẹt là "đã thay đổi nhưng không được cam kết".
Cái quái gì sẽ khiến hai tệp bị kẹt như thế này và dường như "un-revert-table" ??
PS Trong danh sách ở trên hiển thị các lệnh tôi đã thử, tôi đã viết nhầm git revert
khi có ý git checkout
. Tôi xin lỗi và cảm ơn những người trong số các bạn đã trả lời rằng tôi nên thử checkout
. Tôi đã chỉnh sửa câu hỏi để sửa nó. Tôi chắc chắn đã thử checkout
.
git diff --ignore-space-change
hoặcgit diff --ignore-all-space
tạo ra sự khác biệt trong đầu ra củagit diff
?