ฉันจะเช็คเอาท์ไฟล์จากการกระทำอื่นใน Magit ได้อย่างไร


16

ฉันมีไฟล์foo.txtในสาขาAและฉันต้องการเช็คเอาท์foo.txtจาก branch Bไปยังดัชนี บนบรรทัดคำสั่งฉันจะทำสิ่งนี้:

$ git checkout B -- foo.txt

ฉันต้องการที่จะสามารถทำสิ่งนี้ใน magit โดยการเข้าสู่ระบบการค้นหากระทำที่ฉันสนใจ (เช่นl o B), การค้นหาfoo.txtและใช้คำสั่งบางอย่าง แต่ฉันไม่สามารถหาวิธีที่จะทำ


ตอนนี้เป็นคุณลักษณะที่ร้องขอgithub.com/magit/magit/issues/2184 ขอบคุณที่ดูที่ผู้ดูแล
ส่ง

คำตอบ:


21

ตั้งแต่ magit 2.11.0 สามารถทำได้โดยตรงจากโปรแกรมเลือกจ่ายงานรีเซ็ต ( X fและคุณสามารถระบุการแก้ไขและไฟล์):

ป้อนคำอธิบายรูปภาพที่นี่

สิ่งนี้สามารถเขียนโปรแกรมได้ภายใน magit โดยใช้magit-file-checkoutซึ่งยอมรับข้อมูลจำเพาะรุ่นและชื่อไฟล์ ก่อนหน้านี้ชื่อฟังก์ชั่นmagit-checkout-file(จาก v2.3.0 - v2.9.0)


4
magit-checkout-fileล้าสมัยแล้ว ใช้magit-file-checkoutแทน
Sagar Jha

3

ฉันไม่ได้ตระหนักถึงวิธีการที่จะทำเช่นนี้ในตัว

สมมติว่าคุณอยู่ที่สาขา A อีกวิธีหนึ่งก็คือ diff สาขา B ( d r ..B) จากนั้นย้ายจุดไปยังไฟล์ที่คุณสนใจการกดaจะนำการเปลี่ยนแปลงเหล่านั้นไปใช้กับแผนผังการทำงาน (แทนที่จะเป็นดัชนี)

ฉันมีคำสั่งในการกำหนดค่าของฉันเพื่อรีเซ็ตหรือเช็คเอาต์ไฟล์จากการแก้ไข แต่ในสถานะปัจจุบันมันไม่พอดีกับสิ่งที่คุณต้องการเพราะมันจะไม่ให้การแก้ไขเริ่มต้นที่ดีเมื่ออยู่ใน Magit Revision โหมด.

(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)))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.