cách đơn giản nhất để hoàn tác một đặc biệt cam kết rằng là là gì:Undo một đặc biệt cam kết trong Git đó là được đẩy lên Repos từ xa
- không vào đầu hoặc HEAD
- Đã được đẩy lên từ xa.
Bởi vì nếu nó không phải là cam kết mới nhất,
git reset HEAD
không hoạt động. Và bởi vì nó đã được đẩy lên một từ xa,
git rebase -i
và
git rebase --onto
sẽ gây ra một số vấn đề trong điều khiển từ xa.
Hơn thế nữa, tôi không muốn sửa đổi lịch sử thực sự. Nếu có mã xấu, nó đã có trong lịch sử và có thể được nhìn thấy. Tôi chỉ muốn nó ra trong bản sao làm việc, và tôi không nhớ một cam kết hợp nhất ngược lại.
svn merge -r 303:295 http://svn.example.com/repos/calc/trunk
mà loại bỏ tất cả thay đổi 295-302 bằng cách sáp nhập ngược lại tất cả những thay đổi về những sửa đổi, như một cam kết mới:
Nói cách khác, các Git tương đương với các lệnh svn Sau đây là những gì.
svn merge -c -302 ^/trunk
để hủy bỏ các thay đổi từ cam kết tương ứng đó.
Tôi nghĩ rằng nó phải là một hoạt động khá đơn giản trong Git và một trường hợp sử dụng khá phổ biến. Điều gì khác là điểm của các cam kết nguyên tử?
Chúng tôi đã dàn dựng stashing và tất cả để đảm bảo các cam kết hoàn toàn nguyên tử, bạn không thể hoàn tác một hoặc nhiều cam kết nguyên tử một cách dễ dàng?
Và sử dụng công tắc -n nếu bạn muốn mã trở lại, nhưng không tự động được cam kết lại – jaygooby
Tùy chọn "m" sẽ làm gì? Tôi đã thử git revert 8213f7d nhưng thay vào đó là: error: Commit 8213f7dad1ed546b434a0d8a64cb783b530a5a30 là một tùy chọn hợp nhất nhưng không có -m được đưa ra. gây tử vong: hoàn nguyên không thành công – Malcolm
'git help revert' nói rằng nó cho phép bạn chọn cha mẹ của hợp nhất bạn muốn quay trở lại. Bạn không thể hoàn nguyên hợp nhất mà không chọn cha mẹ. Tài liệu hướng dẫn bạn đến https://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt –