【问题标题】:View a file's history in Magit?在 Magit 中查看文件的历史记录?
【发布时间】:2012-12-30 10:46:01
【问题描述】:

View the change history of a file using Git versioning 讨论了在 Git 中查看文件历史记录的其他方式。

可以在 Emacs Magit 中完成吗?

【问题讨论】:

标签: git emacs magit


【解决方案1】:

如果magit(user manual)没有这个功能,那么你可以看看其他Emacs mode,并添加你自己的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
  • 我收到以下消息:Symbol’s function definition is void: git-marked-files
  • @alp 7 年后,该问题将在其自己的问题中得到更好的体现,使用操作系统、eclipse 和魔法插件的确切版本。
【解决方案2】:

我不知道方法。我只是使用M-x vc-print-log,它似乎完成了同样的壮举。不过,这不是一种集成 magit 的方式。

【讨论】:

    【解决方案3】:

    从 magit 2.1 开始:magit-log-buffer-file(根据下面的评论)

    在 magit 2.1 之前:magit-file-log 是您要查找的内容。它将在标准 magit 日志视图中显示当前缓冲区中文件的所有提交。

    【讨论】:

    • 自 magit 2.1 起,magit-file-log 更名为magit-log-buffer-file
    • 不幸的是,magit-log-buffer-file 不会将每个提交的显示限制为仅显示该文件。
    • @CatalinHritcu 它可以很好地显示影响该文件的所有提交,但它不会将每个提交的显示限制为仅显示该文件。
    • 到目前为止我发现的最方便的方法是调用magit-log-buffer-file,然后在您选择的提交上运行magit-ediff-dwim(绑定到Spacemacs 中的“e”快捷方式)。这将显示一个窗口,其中包含两个突出显示更改的窗格。
    • 不清楚@robin-green 和@wilkystyle 所描述的内容,但l-ul 的击键可能会在magit-log-buffer-file 之后有所帮助
    【解决方案4】:

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

    【讨论】:

    • 这不再是临时地图中的一个选项,magit-20210303.1208 ...不确定它何时更改,可能与@Ragge 提到的“之前/之后 magit-2.1”有关。
    【解决方案5】:

    通过键入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 获取当前访问文件的历史记录

    【讨论】:

    • 我认为第 2 步现在是 -- (Magit 20200112.2023, Git 2.20.1, Emacs 26.1, gnu/linux)
    • 很好,也适用于在某些时候被删除的文件。
    • 在您进入 magit 状态之前,是否有一种简单的方法可以自动输入与您正在访问的缓冲区关联的文件名? (在第 3 步中)
    • @hraban 命令magit-log-buffer-file 是你想要的。使用 Spacemacs,您可以使用 <SPC> g f h
    • @BryanAsh 不幸的是我不使用 Spacemacs。我在 magit 日志瞬态中添加了我自己的条目:(transient-append-suffix 'magit-log "l" '("f" "Current file" magit-log-buffer-file)),使用C-x M-g l f 访问。
    猜你喜欢
    • 2012-08-10
    • 2010-12-19
    • 1970-01-01
    • 1970-01-01
    • 2011-04-20
    • 2014-11-25
    • 1970-01-01
    • 2021-10-02
    • 1970-01-01
    相关资源
    最近更新 更多