Bạn cần quay lại và chọn bao nhiêu cam kết? Nếu nó chỉ là một, có thể lấy một nhánh ngay trước nó, kiểm tra tệp bạn đã cam kết và sau đó sử dụng git add -p
để thêm nó theo cách bạn muốn. Sau đó, bạn có thể quay lại vị trí của mình và kiểm tra tệp từ nhánh tạm thời của bạn.
đó là:
git checkout -b temp troublesome-commit^
git checkout troublesome-commit -- path/to/file
git add -p path/to/file
git commit -c troublesome-commit
git checkout @{-1}
git checkout temp -- path/to/file
git commit path/to/file
git branch -D temp
Các lựa chọn thay thế khác bao gồm quay lại và chỉnh sửa cam kết bằng git rebase -i
(đánh dấu cam kết là edit
, sau đó thực hiện git reset HEAD^
và thực hiện lại cam kết khi được thả trở lại trình bao).
Nếu những thay đổi bạn cần chọn nằm trong một loạt các cam kết, tốt hơn là bạn nên trích xuất chúng dưới dạng các bản vá (hoặc một bản vá bao gồm tất cả chúng) và chỉnh sửa thủ công bản vá, lấy ra những thay đổi bạn muốn giữ lại, và đưa phần còn lại vào git apply --reverse
.