标签: git

使 zsh 文件名完成在任何地方都不区分大小写

我的 zshrc 中有以下行以使文件名完成不区分大小写:

\n
zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'\n
Run Code Online (Sandbox Code Playgroud)\n

这在大多数情况下都有效,但我\xe2\x80\x99注意到,如果我输入\xe2\x80\x9cgit add\xc2\xa0\xe2\x80\x9d,然后按,那么Tab我得到的补全是区分大小写的。

\n

我应该使用不同的命令来使文件名完成不区分大小写吗?或者我是否需要开始zstyle为各个命令添加声明?(如果 \xe2\x80\x99 就是答案,那么这些声明应该是什么样子?)

\n

配置

\n

我能够使用 macOS 12.4、Zsh 5.8.1、以下 zshenv 文件重现上述行为:

\n
setopt NO_GLOBAL_RCS\n
Run Code Online (Sandbox Code Playgroud)\n

以及以下 zshrc 文件:

\n
zstyle ':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\n
Run Code Online (Sandbox Code Playgroud)\n

zsh git autocomplete

6
推荐指数
0
解决办法
3039
查看次数

带有子模块的 git status 显示“新提交”

如果我有一个包含子模块的项目,在子模块中进行更改,然后提交这些更改,主项目将在该子模块上显示“新提交”。

但是,如果我“git pull”并更新我的本地项目,并且在 pull 中子模块提交发生了变化,“git status”也会显示“新提交”。

我很困惑“新提交”可能意味着“您需要提交本地更改”,或者“您已经使用需要更新的新引用进行了更新”。

似乎“新提交”可以告诉你两件完全相反的事情。

是否有更好的方法从顶层了解您是否需要推送更改,而您是否有需要更新的新参考?

git

6
推荐指数
1
解决办法
2838
查看次数

6
推荐指数
1
解决办法
1182
查看次数

Git - 删除已删除的文件

我正在使用这个简单的 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)

可以工作。有什么更好的主意吗?

shell cygwin git alias

5
推荐指数
1
解决办法
928
查看次数

将命令行“环境”更改为程序命令

在控制台中,是否可以更改为命令“环境”?为了说明,我以“git”为例。在编程和使用 git 存储库时,我更改为 repos 路径,然后执行许多“git”命令,例如“git x ...”、“git y ...”等。所以我想要的是以某种方式将“更改为" git 这样我就不必一直键入 "git",只需键入 "x ..." 和 "y ..."。或者这是您通常不想要的功能?

command-line shell git alias

5
推荐指数
1
解决办法
170
查看次数

尝试将 --all 推送到 GitHub 时,Git 无限期挂起

当我尝试推--all送到 GitHub 时,Git 传输开始很快,变慢,最终停止。它不会失败,它只是慢慢停止。这是怎么回事?这真的很令人沮丧,我想推动我的代码,但每次我尝试这样做时,它都会变慢停止。我在多个网络上尝试过,所以我认为这不是我的网络连接。

git github

5
推荐指数
1
解决办法
2万
查看次数

获取当前 git 分支的最快(CPU 时间)方法是什么?

我正在尝试提高我的鱼提示的性能,并且由于我的提示包括我当前的 git 分支,我想知道是否有办法让它更快。

现在我正在使用git symbolic-ref HEAD | sed 's/refs\/heads\///',当我第一次cd进入 git repo 时,它有时会挂起一段时间。我想知道是否有已知的更快的方法,或者我怎么能找到。每当我运行时time git symbolic-ref HEAD,它只是输出0.00 real.

git fish

5
推荐指数
1
解决办法
777
查看次数

git 的自定义 bash 自动完成功能破坏了其他 git 自动完成功能

我正在尝试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)

bash git autocomplete

5
推荐指数
1
解决办法
529
查看次数

找不到 git 命令

我必须在 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 命令有效。我不确定是什么导致它开始工作。这令人困惑。

rhel git

5
推荐指数
1
解决办法
1万
查看次数

阻止 Git 子模块 foreach 为每个模块打开更少

我偶尔需要通过我使用的 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)

这实现了我想要的,但我不禁觉得我缺少一个选项或更优雅的解决方案。有吗?

less git

5
推荐指数
1
解决办法
720
查看次数