Просмотреть историю файла в Magit?


87

Просмотр истории изменений файла с помощью управления версиями Git рассказывает о других способах просмотра истории файла в Git.

Можно ли это сделать в Emacs Magit?


Похоже, этот ответ является частью того, что вы ищете emacs.stackexchange.com/a/7683/16879
ibizaman

Ответы:


115

Начиная с 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) для фиксации по вашему выбору. Откроется окно с двумя панелями с выделенными изменениями.
Юрай Мартинка

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
Хорошо, работает также с файлами, которые были удалены в какой-то момент.
Günter Zö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 лет спустя эта проблема была бы лучше представлена ​​в отдельном вопросе с точной версией ОС, eclipse и magic plugin.
VonC
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.