Có rất nhiều cách để làm như vậy, ví dụ:
trong trường hợp bạn chưa thúc đẩy cam kết công khai:
git reset HEAD~1 --soft
Đó là, các thay đổi cam kết của bạn sẽ nằm trong thư mục làm việc của bạn, trong khi đó cam kết LAST sẽ bị xóa khỏi chi nhánh hiện tại của bạn. Xem người đàn ông thiết lập lại git
Trong trường hợp bạn đã đẩy công khai (trên một nhánh gọi là 'master'):
git checkout -b MyCommit //save your commit in a separate branch just in case (so you don't have to dig it from reflog in case you screw up :) )
hoàn nguyên cam kết và đẩy
git checkout master
git revert a8172f36 #hash of the commit you want to destroy
# this introduces a new commit (say, it's hash is 86b48ba) which removes changes, introduced in the commit in question (but those changes are still visible in the history)
git push origin master
ngay bây giờ nếu bạn muốn có những thay đổi đó khi bạn thay đổi cục bộ trong bản sao làm việc của mình ("để bản sao cục bộ của bạn giữ các thay đổi được thực hiện trong cam kết đó") - chỉ cần hoàn nguyên cam kết hoàn nguyên với --no-commit
tùy chọn:
git revert --no-commit 86b48ba (hash of the revert commit).
Tôi đã tạo ra một ví dụ nhỏ: https://github.com/Isantipov/git-revert/commits/master