Переглянути історію файлу в Magit?


85

Перегляд історії змін файлу за допомогою версії Git розповідає про інші способи перегляду історії файлу в Git.

Чи можна це зробити в Emacs Magit?


Схоже, ця відповідь є частиною того, що ви шукаєте emacs.stackexchange.com/a/7683/16879
ibizaman

Відповіді:


113

З magit 2.1: magit-log-buffer-file(згідно з коментарем нижче)

Перед magit 2.1: magit-file-logце те, що ви шукаєте. Він покаже вам усі коміти для файлу в поточному буфері в стандартному поданні журналу Magit.


9
Починаючи з magit 2.1, magit-file-logбуло перейменовано наmagit-log-buffer-file
Anton I. Sipos

9
На жаль, magit-log-buffer-fileне обмежує відображення кожного коміту лише цим файлом.
Робін Грін,

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)
Ліам,

1
Приємно, працює також із файлами, які в якийсь момент були видалені.
Гюнтер Цехбауер,

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 років потому, ця проблема була б краще представлена ​​у його власному питанні з точною версією ОС, затемненням та магічним плагіном.
VonC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.