您如何在 magit 中列出跟踪的文件(git ls-files)?
问问题
2004 次
5 回答
6
@tarsius 关于目前没有用于执行此操作的内置命令这一事实是正确的。
但是,您可以这样做:
: ls-files
RET
:
绑定到magit-git-command
哪个允许您
异步执行 Git 子命令,显示输出。使用前缀参数在当前存储库的根目录中运行 Git。[...]
您当然可以通过录制键盘宏或定义自定义命令并将其绑定到您选择的键序列来自动化上述过程:
(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)
于 2014-08-10T09:52:11.200 回答
4
要跟进来自 @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 提到的键序列将转到跟踪文件部分。
于 2019-02-15T17:59:53.667 回答
2
Magit 不这样做,但dired-k显示每个文件的 (git) 状态,这可能就是您所需要的。
于 2014-07-28T20:30:37.997 回答
0
输出不是那么干净,但我一直在做的是l f TAB来自magit-status
缓冲区。那是...
- l: 的小写“L”
Logging
,它调用magit-key-mode-popup-logging
- f: "f" for
File log
,它调用magit-file-log
- TAB: 调用
minibuffer-complete
您可以使用自定义键绑定和/或宏使这更容易一些。
于 2015-06-01T04:21:25.073 回答
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")))))))
于 2017-10-06T13:20:14.070 回答