ฉันจะเปิดการแก้ไขเฉพาะไฟล์ด้วย Magit ได้อย่างไร


43

เป็นไปได้ไหมที่จะเปิดการแก้ไขเฉพาะไฟล์ใน Emacs ด้วย Magit โดยไม่เปลี่ยนสาขาปัจจุบัน?

ฉันได้รีบาวด์การเปลี่ยนแปลงในเครื่องไปเป็นรุ่นแก้ไขซึ่งฟังก์ชันที่ถูกดัดแปลงถูกแทนที่ด้วยฟังก์ชันในไฟล์อื่น ฉันต้องการเปิดการแก้ไขแบบเก่าของการเปลี่ยนแปลงในบัฟเฟอร์ที่แยกต่างหากเพื่อให้ฉันสามารถเปรียบเทียบการเปลี่ยนแปลงแบบเคียงข้างกัน

โซลูชันแฮ็คปัจจุบันของฉันถูกเรียกใช้git show <branch pre-rebase>:file > old_fileแล้วเปิดold_fileใน Emacs


1
github.com/pidu/git-timemachineสามารถดูไฟล์ระหว่างแต่ละเวอร์ชันได้อย่างรวดเร็ว
kuanyui

1
@kuanyui ฉันใช้git-timemachineแต่เนื่องจากรหัสของฉันถูกรีบูทแล้วฉันไม่คิดว่ามันจะใช้ได้เพราะรหัสเก่าไม่ได้เป็นส่วนหนึ่งของประวัติศาสตร์สาขาปัจจุบัน?
David Holm

คำตอบ:


56

M-x magit-find-file RET <filename> RETคุณสามารถดูไฟล์สำหรับการแก้ไขที่เฉพาะเจาะจงโดยใช้

หรือคุณสามารถดู diff สำหรับ commit ได้โดยกดRETที่มันนำทางไปยังไฟล์ที่อยู่ใน diff แล้วกดRETอีกครั้ง


8
มันใช้งานได้สำหรับฉัน นี่คือสิ่งที่ผมต้องทำ: จากรุ่นปัจจุบันของไฟล์M-x magit-log-buffer-file, M-x magit-find-fileย้ายสายการกระทำที่ต้องการแล้ว จากนั้นค่าเริ่มต้นจะเป็นที่ยอมรับ ฉันต้องให้เส้นทางไปยังไฟล์เนื่องจากไม่ได้รับจากบัฟเฟอร์การบันทึก
เลียม

@tarsius ค่อนข้างคล้ายกับ magit-find-file แต่ที่ฉันเพียงแค่ต้องเลือกการแก้ไขสำหรับไฟล์บัฟเฟอร์ปัจจุบัน มันมีอยู่แล้ว?
ergosys

ใช่ใช้magit-find-fileตัวเองจากบัฟเฟอร์การเยี่ยมชมไฟล์จากนั้นเพียงพิมพ์RETที่พรอมต์ที่สอง (ไฟล์ที่เหมาะสมถูกเสนอเป็นค่าเริ่มต้น)
Tarsius

ขอบคุณสำหรับข้อมูลและผลงานทั้งหมดของคุณใน Magit มันไม่ยากเกินไปที่จะแฮ็กฟังก์ชันที่ข้ามการกดแป้นพิเศษที่น่ารำคาญดังนั้นฉันจึงมีความสุขจนกระทั่งคันต่อไปเกิดขึ้น
ergos

29

เป็นไปได้ที่จะทำกับ VC แบบธรรมดา (ในตัวกับ Emacs) โดยไม่มี Magit พิมพ์C-x v ~และพิมพ์รุ่นที่คุณต้องการ มันเข้าใจแท็กและแฮช SHA1 รวมถึง~1ส่วนต่อท้ายอื่น ๆตามปกติ


นี่ไม่ใช่คำตอบสำหรับคำถามของนักเวท คุณจะโพสต์คำตอบ C กับคำถาม Ruby หรือไม่
Bryan Ash

4
@BryanAsh ใช่ถ้าวิธีแก้ปัญหาใน C ง่ายขึ้นมาก
Markus Strauss
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.