Magit - Hoàn tác cam kết cuối cùng - Thao tác lịch sử


12

Đây câu hỏi StackOverflow có giải pháp tốt nhất / cách tiếp cận hoàn tác cam kết cuối cùng.

Tôi đã bắt đầu sử dụng Magit một vài tuần trước và sau khi xem qua tất cả các tài liệu của nó, tôi vẫn không có cách nào dứt khoát / tốt nhất để hoàn tác một thay đổi sai lầm.

Ví dụ:
Để hoàn tác và làm lại cam kết cuối cùng, chúng ta có thể sử dụng:

$ git commit -m "Something terribly misguided"
$ git reset HEAD~
<< edit files as necessary >>
$ git add ... 
$ git commit -c ORIG_HEAD # To keep the same commit message

Điều gì nên là quy trình công việc tốt nhất để tái tạo thủ tục này bằng Magit ?

Câu trả lời:


17

Bạn có thể sử dụng magit-reset(bị ràng buộc theo mặc định x). Cam kết tại điểm sẽ được sử dụng làm mặc định cho lời nhắc, nhưng bạn có thể nhập bất kỳ giá trị sửa đổi nào bạn muốn ("ĐẦU ~" tại đây).

Các lệnh đặt lại được mô tả trong phần "Đặt lại" trong hướng dẫn sử dụng: https://magit.vc/manual/magit/Resetting.html

Để sử dụng lại thông điệp cam kết, bạn có thể sử dụng =Ctùy chọn trong cửa sổ bật lên cam kết. Unforuntately, dấu nhắc hiện không cung cấp bất kỳ giá trị hoàn thành (Tôi nghĩ rằng nó nên có lẽ ít nhất phục vụ ORIG_HEAD), nhưng trước khi đặt bạn có thể đặt giá trị băm của hiện cam kết trong vòng kill (ví dụ, với C-wtrên "Head:" dòng của bộ đệm trạng thái) và sau đó, sau khi đặt lại, lấy nó làm giá trị cho =Ctùy chọn.


Một số ý kiến ​​bổ sung:

  • Thay vì sử dụng =C, bạn có thể thấy thuận tiện hơn khi bắt đầu cam kết ( cc) và sau đó sử dụng git-commit-prev-message ( M-p) để chuyển qua các tin nhắn trước đó.

  • Nếu bạn chỉ sửa đổi cam kết cuối cùng, bạn có thể giải quyết các thay đổi theo giai đoạn đối với cam kết trước đó với magit-commit-amend ( ca) hoặc magit-commit-extend( ce). (Cái sau sử dụng lại thông điệp cam kết, bỏ qua bộ đệm COMMIT_EDITMSG.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.