ดูประวัติของไฟล์ใน Magit?


88

ดูประวัติการเปลี่ยนแปลงของไฟล์โดยใช้การกำหนดเวอร์ชัน Gitพูดถึงวิธีอื่น ๆ ในการดูประวัติการเข้าชมไฟล์ใน Git

สามารถทำได้ใน Emacs Magit หรือไม่?


ดูเหมือนคำตอบนี้จะเป็นส่วนหนึ่งของสิ่งที่คุณกำลังมองหาemacs.stackexchange.com/a/7683/16879
ibizaman

คำตอบ:


116

ตั้งแต่ magit 2.1: magit-log-buffer-file(ตามความคิดเห็นด้านล่าง)

Before magit 2.1: magit-file-logคือสิ่งที่คุณกำลังมองหา มันจะแสดงการคอมมิตทั้งหมดสำหรับไฟล์ในบัฟเฟอร์ปัจจุบันในมุมมองบันทึก magit มาตรฐาน


9
ตั้งแต่ magit 2.1 magit-file-logถูกเปลี่ยนชื่อเป็นmagit-log-buffer-file
Anton

9
น่าเสียดายที่magit-log-buffer-fileไม่ได้ จำกัด การแสดงผลของแต่ละคอมมิตเฉพาะไฟล์
Robin Green

4
@CatalinHritcu มันทำงานได้ดีในการแสดงคอมมิตทั้งหมดที่มีผลกับไฟล์นั้น แต่มันไม่ได้ จำกัด การแสดงคอมมิตแต่ละไฟล์ไว้แค่ไฟล์นั้น
wilkystyle

5
วิธีที่สะดวกที่สุดที่ฉันพบจนถึงตอนนี้คือเรียกใช้magit-log-buffer-fileแล้วเรียกใช้magit-ediff-dwim(ผูกกับทางลัด "e" ใน Spacemacs) ตามการกระทำที่คุณเลือก นี่จะแสดงหน้าต่างที่มีสองบานหน้าต่างพร้อมการเปลี่ยนแปลงที่เน้น
Juraj Martinka

1
ไม่มีความชัดเจนว่า @ โรบินสีเขียวและ @wilkystyle จะอธิบาย แต่บางทีการกดแป้นพิมพ์l, -uและlจะช่วยให้หลังmagit-log-buffer-file
dickmao

33

เปิดmagit-statusบัฟเฟอร์ของคุณโดยการพิมพ์M-x magit-status(ฉันเคยผูกสิ่งนี้ไว้C-. C-gเพราะมันถูกใช้ตลอดเวลาทุกวันนี้ฉันใช้ Spacemacs ดังนั้นจึงเป็นเช่นนั้น<SPC> g s)

  1. พิมพ์lเพื่อรับตัวเลือกการดูบันทึก
  2. พิมพ์--เพื่อตั้งค่าตัวเลือก "จำกัด เฉพาะไฟล์" (เคยเป็น=f)
  3. ป้อนเส้นทางไฟล์ที่คุณต้องการดูประวัติ
  4. พิมพ์lเพื่อดูบันทึกของสาขาปัจจุบัน

หากคุณใช้ Spacemacs คุณสามารถรับประวัติของไฟล์ที่เยี่ยมชมในปัจจุบันโดยใช้ <SPC> g f h


1
ฉันคิดว่าขั้นตอนที่ 2 คือตอนนี้--( Magit 20200112.2023, Git 2.20.1, Emacs 26.1, gnu/linux)
Liam

1
ดีใช้ได้กับไฟล์ที่ถูกลบในบางจุด
GünterZöchbauer

11

ใน*magit: <project>*บัฟเฟอร์ของคุณใช้lเพื่อเข้าสู่โหมดบันทึกจากนั้นกดfเพื่อขอชื่อไฟล์


3

ฉันไม่รู้วิธี ฉันแค่ใช้M-x vc-print-logที่ดูเหมือนจะบรรลุผลสำเร็จเดียวกัน แม้ว่ามันจะไม่ใช่วิธีที่รวมอำนาจไว้ด้วยกันก็ตาม


2

หากmagit ( คู่มือผู้ใช้ ) ไม่มีคุณสมบัตินั้นคุณสามารถดูโหมด Emacsอื่น ๆและเพิ่มgit-log-fileฟังก์ชันของคุณเอง:

(defun git-log-file ()
  "Display a log of changes to the marked file(s)."
  (interactive)
  (let* ((files (git-marked-files))
         (buffer (apply #'git-run-command-buffer "*git-log*" "git-rev-list" \
"--pretty" "HEAD" "--" (git-get-filenames files))))  (with-current-buffer buffer
      ; (git-log-mode)  FIXME: implement log mode
      (goto-char (point-min))
      (setq buffer-read-only t))
    (display-buffer buffer)))

หรือเพียงแค่ใช้C-x v l
Phils

ฉันมีข้อความต่อไปนี้:Symbol’s function definition is void: git-marked-files
alper

1
@alp 7 ปีต่อมาปัญหานั้นจะแสดงได้ดีกว่าในคำถามของตัวเองด้วยเวอร์ชันที่แน่นอนของปลั๊กอิน OS, eclipse และ magic
VonC
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.