Đọc lại câu hỏi, có vẻ như bạn muốn hoàn nguyên các thay đổi trong cây làm việc của bạn và không phải là những thay đổi đã được cam kết trước đó, nhưng một số câu trả lời khác làm cho việc đọc của tôi có thể sai. Bạn có thể làm rõ?
Nếu các thay đổi chỉ có trong bản sao làm việc của bạn thì cách dễ nhất để thực hiện việc này là thực hiện các thay đổi bạn muốn thực hiện:
git add -i <file>
Sau đó, vứt bỏ những thay đổi mà bạn không muốn giữ bằng cách kiểm tra phiên bản chỉ mục:
git checkout -- <file>
Sau đó, bỏ qua các thay đổi nếu bạn chưa muốn chúng được dàn dựng:
git reset -- <file>
Công thức này chỉ hoàn nguyên các thay đổi đã chọn đối với tệp (hoặc tệp mà bạn chỉ định) và không tạo ra bất kỳ cam kết tạm thời nào sau đó cần hoàn nguyên.
Nếu bạn muốn chỉ áp dụng có chọn lọc một số thay đổi được thực hiện trong các lần xác nhận trước đó thì trước tiên bạn có thể đặt lại tệp về trạng thái đã cam kết trước đó:
git reset <commit_before_first_unwanted_change> -- <file>
Sau đó, bạn có thể làm theo công thức trước đó git add -i <file>
để thực hiện các thay đổi mà bạn muốn giữ, git checkout -- <file>
để loại bỏ các thay đổi không mong muốn và git reset -- <file>
' không thể thay đổi ' các thay đổi.