我的 zshrc 中有以下行以使文件名完成不区分大小写:
\nzstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'\nRun Code Online (Sandbox Code Playgroud)\n这在大多数情况下都有效,但我\xe2\x80\x99注意到,如果我输入\xe2\x80\x9cgit add\xc2\xa0\xe2\x80\x9d,然后按,那么Tab我得到的补全是区分大小写的。
\n我应该使用不同的命令来使文件名完成不区分大小写吗?或者我是否需要开始zstyle为各个命令添加声明?(如果 \xe2\x80\x99 就是答案,那么这些声明应该是什么样子?)
我能够使用 macOS 12.4、Zsh 5.8.1、以下 zshenv 文件重现上述行为:
\nsetopt NO_GLOBAL_RCS\nRun Code Online (Sandbox Code Playgroud)\n以及以下 zshrc 文件:
\nzstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'\nzstyle ':completion:*' cache-path /var/tmp/zcompcache\nautoload -U compinit && compinit -d /var/tmp/zcompdump\nRun Code Online (Sandbox Code Playgroud)\n 如果我有一个包含子模块的项目,在子模块中进行更改,然后提交这些更改,主项目将在该子模块上显示“新提交”。
但是,如果我“git pull”并更新我的本地项目,并且在 pull 中子模块提交发生了变化,“git status”也会显示“新提交”。
我很困惑“新提交”可能意味着“您需要提交本地更改”,或者“您已经使用需要更新的新引用进行了更新”。
似乎“新提交”可以告诉你两件完全相反的事情。
是否有更好的方法从顶层了解您是否需要推送更改,而您是否有需要更新的新参考?
在 git 中跟踪 bitbake 配置和使用的层的正确方法是什么?
我正在使用这个简单的 git 别名
rmdel = "!git rm $(git ls-files -d)"
Run Code Online (Sandbox Code Playgroud)
意思是“删除已删除”,即从暂存区删除从文件系统中删除的所有文件。它工作正常,除非有任何包含空格的文件。显然,列表也会被拆分,从而导致不存在文件的文件名。
我认为应该可以使用 IFS 来解决它,但是 IFS 似乎在 cygwin 中不起作用,我怀疑类似
rmdel = "!IFS=' ' git rm $(git ls-files -d)"`
Run Code Online (Sandbox Code Playgroud)
可以工作。有什么更好的主意吗?
在控制台中,是否可以更改为命令“环境”?为了说明,我以“git”为例。在编程和使用 git 存储库时,我更改为 repos 路径,然后执行许多“git”命令,例如“git x ...”、“git y ...”等。所以我想要的是以某种方式将“更改为" git 这样我就不必一直键入 "git",只需键入 "x ..." 和 "y ..."。或者这是您通常不想要的功能?
当我尝试推--all送到 GitHub 时,Git 传输开始很快,变慢,最终停止。它不会失败,它只是慢慢停止。这是怎么回事?这真的很令人沮丧,我想推动我的代码,但每次我尝试这样做时,它都会变慢停止。我在多个网络上尝试过,所以我认为这不是我的网络连接。
我正在尝试提高我的鱼提示的性能,并且由于我的提示包括我当前的 git 分支,我想知道是否有办法让它更快。
现在我正在使用git symbolic-ref HEAD | sed 's/refs\/heads\///',当我第一次cd进入 git repo 时,它有时会挂起一段时间。我想知道是否有已知的更快的方法,或者我怎么能找到。每当我运行时time git symbolic-ref HEAD,它只是输出0.00 real.
我正在尝试git commit在点击时添加自动完成功能TabTab。
我正在开发的自动完成功能基于分支命名约定。约定是将 PivotalTracker Id 编号附加到分支名称的末尾,因此典型的分支看起来像foo-bar-baz-1449242.
我们可以通过添加[#1449242]到提交消息的开头来将提交与 PivotalTracker 卡相关联。如果git commit输入并且用户点击,我希望它自动插入TabTab。
我已经在这里做了这个:https : //github.com/tlehman/dotfiles/blob/master/ptid_git_complete
(为了方便起见,这里是源代码):
function _ptid_git_complete_()
{
local line="${COMP_LINE}" # the entire line that is being completed
# check that the commit option was passed to git
if [[ "$line" == "git commit" ]]; then
# get the PivotalTracker Id from the branch name
ptid=`git branch | grep -e "^\*" | sed 's/^\* //g' | …Run Code Online (Sandbox Code Playgroud) 我必须在 RHEL 上从源代码安装 git。安装后,/usr/local/bin/git在尝试whereis命令时显示 git 命令。 此路径也可用$PATH。
当我输入 git 时,它仍然显示“找不到命令”。如何解决这个问题?
编辑:各种命令的输出
$type git
type: Command not found.
$which git
git: Command not found.
$ls -l /usr/local/bin/git
-rwxr-xr-x 112 root users 5851488 Mar 15 20:07 /usr/local/bin/git
$whereis git
git: /usr/local/bin/git
$echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Run Code Online (Sandbox Code Playgroud)
编辑:它现在有效,但不知道为什么
我断开了 telnet 连接并在几分钟前再次登录,发现 git 命令有效。我不确定是什么导致它开始工作。这令人困惑。
我偶尔需要通过我使用的 git 子模块 grep :
git submodule foreach 'git grep x'
Run Code Online (Sandbox Code Playgroud)
但是,由于切换到 zsh,我发现为每个子模块打开的提示较少,即使没有选项也是如此。我更喜欢将所有输出打印到终端。
我目前的解决方案是调用:
git submodule foreach 'git grep x' > /tmp/a && cat /tmp/a
Run Code Online (Sandbox Code Playgroud)
这实现了我想要的,但我不禁觉得我缺少一个选项或更优雅的解决方案。有吗?