Bạn có thể sử dụng git checkout -p
, cho phép bạn chọn các khối riêng lẻ từ khác biệt giữa bản sao và chỉ mục làm việc của bạn để hoàn nguyên. Tương tự như vậy, git add -p
cho phép bạn chọn các hunk để thêm vào chỉ mục và git reset -p
cho phép bạn chọn các hunk riêng lẻ từ khác biệt giữa chỉ mục và HEAD để thoát ra khỏi chỉ mục.
$ git checkout -p file/to/partially/revert
# or ...
$ git checkout -p .
Nếu bạn muốn chụp nhanh kho lưu trữ git của mình trước để bảo toàn những thay đổi này trước khi hoàn nguyên chúng, tôi muốn làm:
$ git stash; git stash apply
Nếu bạn sử dụng thường xuyên, bạn có thể muốn bí danh nó:
[alias]
checkpoint = !git stash; git stash apply
Việc hoàn nguyên các dòng hoặc dòng riêng lẻ thậm chí có thể dễ dàng hơn nếu bạn sử dụng chế độ chỉnh sửa hoặc plugin tốt, có thể cung cấp hỗ trợ cho việc chọn các dòng trực tiếp để hoàn nguyên, vì đôi khi -p
có thể hơi vụng về khi sử dụng. Tôi sử dụng Magit , chế độ Emacs rất hữu ích khi làm việc với Git. Trong Magit, bạn có thể chạy magit-status
, tìm các khác biệt cho các thay đổi mà bạn muốn hoàn nguyên, chọn các dòng bạn muốn hoàn nguyên (hoặc chỉ cần đặt con trỏ lên các khối mà bạn muốn hoàn nguyên nếu bạn muốn hoàn nguyên một hunk tại một thời điểm thay vì một dòng tại một thời điểm) và nhấn k
để hoàn nguyên các dòng cụ thể đó. Tôi đánh giá cao Magit nếu bạn sử dụng Emacs.