Theo như tôi biết, khi bạn muốn hoàn tác một thứ gì đó trong Git, bạn phải tìm lệnh để hoàn tác bất cứ điều gì bạn đã làm và phát hành nó. Ví dụ, một cách trong số rất nhiều để hoàn tác một cam kết và thực hiện lại nó là để làm theo các ví dụ từ here,Tại sao không có hoàn tác/làm lại trong Git?
$ git commit ...
$ git reset --soft HEAD^
$ edit
$ git add ....
$ git commit -c ORIG_HEAD
Hoặc để lùi lại một kéo, bạn có thể làm theo hướng dẫn từ here,
$ git reset --hard
Nhưng những lệnh này không nhất thiết phải làm việc thay thế cho nhau. Có một lý do tại sao Git không cho phép đơn giản hoàn tác và làm lại lệnh? Một cái gì đó để làm với triết lý đằng sau nó? Ngoài ra, tôi không có nhiều kinh nghiệm với các hệ thống điều khiển phiên bản khác, nhưng có bất kỳ hệ thống nào cung cấp một lệnh hoàn tác và làm lại đơn giản không?
Tôi không chắc chắn, nhưng tôi nghĩ bạn có thể làm điều này bằng cách sử dụng 'git rebase'. Kiểm tra http://gitready.com/intermediate/2009/01/31/intro-to-rebase.html – gustavotkg
Ý tưởng này là bạn thường không bao giờ muốn làm những điều khiến bạn mất đi một phần lịch sử. Hoàn tác một cam kết sẽ loại bỏ nó khỏi lịch sử, do đó thường không phải là điều bạn sẽ làm. – poke
@poke Vâng, Adobe Photoshop, ví dụ, duy trì một lịch sử rộng lớn và vẫn cho phép bạn hoàn tác/làm lại. Tại sao Git không làm như vậy? – john