Làm cách nào để kiểm tra một tệp từ một cam kết khác trong Magit


16

Tôi đã có một tệp foo.txttrong chi nhánh Avà tôi muốn kiểm tra foo.txttừ chi nhánh Bvào chỉ mục. Trên dòng lệnh, tôi sẽ làm điều này:

$ git checkout B -- foo.txt

Tôi muốn có thể thực hiện điều này bằng phép thuật bằng cách đăng nhập, tìm cam kết mà tôi quan tâm (ví dụ l o B), tìm foo.txtvà chạy một số lệnh, nhưng tôi không thể tìm ra cách thực hiện.


Đây hiện là một yêu cầu tính năng github.com/magit/magit/issues/2184 . Cảm ơn bạn đã xem nó, những người bảo trì
Emoses 19/08/2015

Câu trả lời:


21

Kể từ magit 2.11.0, điều này có thể trực tiếp từ bộ điều phối thiết lập lại ( X fvà bạn có thể chỉ định sửa đổi và tệp):

nhập mô tả hình ảnh ở đây

Điều này có thể được thực hiện theo chương trình trong phạm vi sử dụng magit-file-checkoutchấp nhận thông số phiên bản và tên tệp (nhờ yêu cầu tính năng của @Emoses và triển khai @Kyle Meyer). Trước đây hàm được đặt tên magit-checkout-file(từ v2.3.0 - v2.9.0).


4
magit-checkout-filebây giờ đã lỗi thời Sử dụng magit-file-checkoutthay thế.
Sagar Jha

3

Tôi không biết một cách dựng sẵn để làm điều này.

Giả sử bạn đang ở chi nhánh A, một cách tiếp cận khác sẽ là khác chi nhánh B (d r ..B ), sau đó di chuyển điểm đến tệp bạn quan tâm. Nhấn asẽ áp dụng những thay đổi đó cho cây làm việc (thay vì chỉ mục).

Tôi có một lệnh trong cấu hình của mình để đặt lại hoặc kiểm tra tệp từ bản sửa đổi, nhưng, ở trạng thái hiện tại, nó không phù hợp với chính xác những gì bạn yêu cầu vì nó sẽ không cung cấp mặc định sửa đổi tốt khi trong Sửa đổi Magit chế độ.

(defun km/magit-reset-file (rev file &optional checkout)
  "Reset FILE from revision REV.

If prefix argument CHECKOUT is non-nil, checkout FILE from REV
instead.

\(git reset REV -- FILE)
\(git checkout REV -- FILE)"
  (interactive
   (let ((rev (magit-read-branch-or-commit "Revision")))
     (list rev (magit-read-file-from-rev rev "File") current-prefix-arg)))
  (magit-with-toplevel
    (magit-run-git (if checkout "checkout" "reset")
                   rev "--" file)))
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.