Làm cách nào tôi có thể mở bản sửa đổi cụ thể của tệp bằng Magit?


43

Có thể mở một bản sửa đổi cụ thể của một tệp trong Emacs với Magit mà không thay đổi nhánh hiện tại không?

Tôi đã từ chối một số thay đổi cục bộ thành một sửa đổi trong đó các chức năng đã sửa đổi được thay thế bằng chức năng trong một tệp khác. Tôi muốn mở bản sửa đổi cũ của các thay đổi của mình trong một bộ đệm riêng để tôi có thể so sánh các thay đổi cạnh nhau.

Giải pháp hacky hiện tại của tôi đã được chạy git show <branch pre-rebase>:file > old_filevà sau đó mở old_filetrong Emacs.


1
github.com/pidu/git-timemachine có thể tạm thời xem một tệp giữa mỗi phiên bản.
kuanyui

1
@kuanyui Tôi sử dụng git-timemachinenhưng vì mã của tôi đã bị loại bỏ nên tôi không nghĩ nó sẽ hoạt động vì mã cũ không phải là một phần của lịch sử của chi nhánh hiện tại?
David Holm

Câu trả lời:


56

Bạn có thể xem một tập tin cho một sửa đổi cụ thể bằng cách sử dụng M-x magit-find-file RET <filename> RET.

Hoặc trước tiên bạn có thể xem diff cho cam kết bằng cách nhấn RETvào nó, điều hướng đến tệp bên trong diff và sau đó nhấn RETlại.


8
Điều này làm việc cho tôi; Đây là những gì tôi làm: từ phiên bản hiện tại của tệp M-x magit-log-buffer-file, sau đó di chuyển dòng đến cam kết mong muốn M-x magit-find-file. Sau đó, giá trị mặc định sẽ là cam kết đó. Tôi phải đưa đường dẫn đến tệp vì nó không được chọn từ bộ đệm nhật ký.
Liam

@tarsius, hơi giống như magit-find-file nhưng ở đó tôi chỉ cần chọn sửa đổi cho tệp bộ đệm hiện tại. Nó đã tồn tại chưa?
ergosys

Có, sử dụng magit-find-filechính nó từ bộ đệm truy cập tệp và sau đó chỉ cần gõ RETtại dấu nhắc thứ hai (tệp thích hợp được cung cấp làm mặc định).
tarsius

Cảm ơn thông tin và tất cả công việc của bạn trên Magit. Không quá khó để hack một chức năng bỏ qua thao tác gõ phím phiền phức, vì vậy tôi rất vui cho đến khi cơn ngứa tiếp theo xảy ra.
ergosys

29

Có thể thực hiện với VC đơn giản (tích hợp vào Emacs) mà không cần Magit. Nhập C-x v ~và nhập phiên bản bạn muốn. Nó hiểu các thẻ và băm SHA1, cũng như các ~1hậu tố vv thông thường .


Đây không phải là một câu trả lời cho một câu hỏi magit. Bạn sẽ đăng câu trả lời C cho câu hỏi Ruby?
Bryan Ash

4
@BryanAsh có, nếu giải pháp trong C dễ dàng hơn nhiều.
Markus Strauss
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.