如何在magit中列出跟踪文件(git ls-files)?
答案 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 Sections和Section Hooks文档。)
然后,在Magit状态缓冲区中,输入j t
键序列@lindes提及内容将转到“跟踪文件”部分。
答案 3 :(得分:0)
输出不是很干净,但我一直做的是来自magit-status
缓冲区的 l f TAB 。那是......
Logging
,调用magit-key-mode-popup-logging
File log
,调用magit-file-log
minibuffer-complete
使用自定义键绑定和/或宏可以使这更容易。
答案 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")))))))