如何在magit中列出跟踪文件(git ls-files)?

时间:2014-07-28 11:03:17

标签: git emacs magit

如何在magit中列出跟踪文件(git ls-files)?

5 个答案:

答案 0 :(得分:3)

@tarsius说的是,目前没有内置命令来执行此操作。

但是,你可以这样做:

ls-files RET

:绑定到magit-git-command,允许您

  

异步执行Git子命令,显示输出。   使用前缀参数在当前的根目录中运行Git   库。 [...]


您当然可以通过录制keyboard macro或定义自定义命令并将其绑定到您选择的键序列来自动执行上述过程:

(defun magit-ls-files ()
  "List tracked files of current repository."
  (interactive)
  (if (derived-mode-p 'magit-mode)
      (magit-git-command "ls-files" default-directory)
    (message "Not in a Magit buffer.")))

(define-key magit-mode-map (kbd "K") 'magit-ls-files)

答案 1 :(得分:2)

Magit没有这样做,但dired-k显示了每个文件的(git)状态,这可能就是您所需要的。

答案 2 :(得分:2)

要继续跟踪the comment from @lindes,您可以配置Magit通过以下方式将跟踪文件列表包括在状态缓冲区中

(magit-add-section-hook
   'magit-status-sections-hook
   'magit-insert-tracked-files
   nil
   'append)

例如在您的.emacs文件中。 (有关详细信息,请参见Status SectionsSection Hooks文档。)

然后,在Magit状态缓冲区中,输入j t键序列@lindes提及内容将转到“跟踪文件”部分。

答案 3 :(得分:0)

输出不是很干净,但我一直做的是来自magit-status缓冲区的 l f TAB 。那是......

  1. l :小写" L"对于Logging,调用magit-key-mode-popup-logging
  2. f :" f"对于File log,调用magit-file-log
  3. TAB :调用minibuffer-complete
  4. 使用自定义键绑定和/或宏可以使这更容易。

答案 4 :(得分:0)

以下代码段对我很有用。要使用它,请运行M-x my-git-dired并输入git工作目录(或子目录)。生成的缓冲区是普通的dired缓冲区,因此可以对多个文件进行查询替换。

(defun my-git-dired (dir)
  (interactive
   "DDirectory inside a git repository: \n")
  (condition-case nil
      (dired (cons "*git-dired*" (my-git-ls-files dir)))
    (error (message "Execution of git-ls-files failed"))))

(defun my-git-ls-files (dir)
  (save-excursion
    (cd dir)
    (split-string
     ;; The following is shell-command-to-string with error handling added.
     (with-output-to-string
       (with-current-buffer
           standard-output
         (unless (= 0 (call-process shell-file-name nil t nil
                                    shell-command-switch "git ls-files"))
           (error "Not a git repo")))))))