我想停止将git
命令写入$HISTFILE
,而是在自己的文件中跟踪它们。
我希望所有非git命令都写入$HISTFILE
,所有与"git*"
匹配的命令都写入~/.git_history
。
答案 0 :(得分:4)
这是一个主意:
使用HISTIGNORE
shell变量从正常的命令历史记录中过滤掉所有git
条命令。
创建一个名为git
的shell函数,该函数将行git $@
附加到~/.git_history
...然后执行/usr/bin/git "$@"
。
但是我认为这不是一个好主意。正如@evolutionxbox指出的那样,如果您滤除所有git
命令,则将无法完成git
命令的历史记录。 (我会讨厌那个……)
这种方法存在一个重大缺陷。伪造的git“ history”文件在外壳展开后仅包含git
命令的命令参数。您将不会记录扩展的内容,也不会记录任何重定向或管道。
FWIW,我认为bash
不能将历史记录列表的不同部分写入不同的文件。因此,以上内容可能会很不错……除非您准备自己修改bash
。
答案 1 :(得分:3)
将以下功能添加到.bashrc
(如果使用Mac,则为.bash_login
),然后重新启动终端。
git() {
fc -nl -0 | cut -c3- >> ~/.git_history
history -d -1
command git "$@"
}
当您在shell中使用git
时,将改为调用此函数。
.bash_history
中(包括未扩展的变量,引号等)并将其附加到~/.git_history
。如注释中所述,.git_history
仅用作输入的git命令的日志。您不能使用↑或 ctrl R 取回输入的git命令-即使在同一会话中也是如此。