在Magit中查看文件的历史记录?

114

看起来这个答案是你正在寻找的一部分 https://emacs.stackexchange.com/a/7683/16879 - ibizaman
6个回答

148
自 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 方法不能仅显示与该文件有关的提交记录。 - Robin Green
4
它可以很好地显示涉及该文件的所有提交,但它无法将每个提交的显示限制在该文件中。 - wilkystyle
5
到目前为止,我发现最方便的方法是调用magit-log-buffer-file,然后在所选的提交上运行magit-ediff-dwim(在Spacemacs中使用“e”快捷键绑定)。这将显示具有突出显示更改的两个窗格的窗口。 - Juraj Martinka
1
不清楚@robin-green和@wilkystyle在描述什么,但也许在magit-log-buffer-file之后按下键盘上的l-ul会有所帮助。 - dickmao
我猜没有任何功能支持对一个不存在的文件进行日志记录? - nroose

45

输入M-x magit-status打开你的magit-status缓冲区(我曾经将其绑定为C-. C-g,因为它经常被使用。现在我使用Spacemacs,所以是<SPC> g s

  1. 输入l查看日志选项
  2. 输入--设置“限制文件”选项(以前是=f
  3. 输入您想查看历史记录的文件路径
  4. 输入l查看当前分支的日志

如果您使用Spacemacs,则可以使用<SPC> g f h获取当前访问文件的历史记录


1
我认为第二步现在是 -- (Magit 20200112.2023, Git 2.20.1, Emacs 26.1, gnu/linux)。 - Liam
1
很好,它也可以处理曾经被删除的文件。 - Günter Zöchbauer
在进入 Magit 状态之前,是否有一种简单的方法可以自动输入与您访问的缓冲区相关联的文件名?(第3步) - hraban
@hraban,你需要的命令是 magit-log-buffer-file。在 Spacemacs 中,你可以使用 <SPC> g f h - Bryan Ash
1
很抱歉,@BryanAsh,我不使用Spacemacs。我在magit日志瞬态中添加了自己的条目:(transient-append-suffix 'magit-log "l" '("f" "当前文件" magit-log-buffer-file)),可以通过C-x M-g l f访问。 - hraban

12
在你的 *magit: <project>* 缓冲区中,使用 l 进入日志模式,然后按下 f 以提示输入文件名。

2
这在瞬态映射 magit-20210303.1208 中已不再是一个选项... 不确定何时更改,可能与 @Ragge 提到的“before/since magit-2.1”有关。 - r2evans

5
如果 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 七年后,该问题最好用自己的问题来表示,包括操作系统、Eclipse和Magic插件的确切版本。 - VonC

4

我不知道其他方法,我只是使用M-x vc-print-log命令,它似乎可以完成相同的任务。但这并不是magit集成的方式。


2
按下 C-cM-g 可以打开 magit-file-dispatch,其中包含多个“文件本地”的 magit 命令,例如 blame 和 log(l)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接