WSL 中 git 提交时出现“输入设备不是 TTY”错误

问题描述 投票:0回答:1

我正在设置一个新的开发环境,从表面上看,它与我在另一台计算机上的环境相同:

  • Windows 10
  • 运行 AmazonLinux2 的 WSL
  • Windows 终端
  • git 版本 2.40.1

使用终端,我进行了一组新的更改,然后输入:

git commit -S -m "My commit message here"

返回此短信:

the input device is not a TTY

检查

git status
显示分阶段更改仍未提交。

我已经尝试过:

  • 删除
    -m
    和消息,希望git能打开vim
  • 卸下
    -S
    开关
  • 跑步
    --dry-run
  • 以上所有排列
  • 将 git 的
    core.terminal
    设置配置为
    vi
    (我相信这是默认设置,但是嘿,你永远不知道)

当我用 Google 搜索该消息时,几乎所有结果都与 Docker shell 相关,并且似乎无关(大多数答案涉及从

-it
命令中删除或更改
docker exec
开关)。我确实运行了 Docker,但 git 命令没有在 Docker 实例中运行。

同样,我在另一台具有看似相同设置的计算机上没有遇到此问题。

更新

我找出了原因,并找到了解决方法,但没有真正解决它;请参阅下面我自己的答案。

再次强调,这不是一个解决方案,因为 linting 的存在显然是有原因的,但我能够推进我的更改,完成任务,并将错误处理推迟到另一天。问题仍然悬而未决。

git git-commit wsl-2 tty git-config
1个回答
1
投票

这不是错误原因的解决方案,而是一种允许我继续工作的解决方法。

我的机器上配置了 git,并带有一个运行 GrumPHP 的预处理器来检查我的代码; GrumPHP 抛出 TTY 错误。我能够禁用它以进行提交,但 GrumPHP 的问题仍然存在。

对于任何遇到类似问题并通过 Google 搜索到这里的人来说,如果您在提交流程中配置了预处理,则脚本将位于项目的

.git/hooks/
文件夹中。就我而言,我编辑了
.git/hooks/pre-commit
/.git/hooks/commit-msg
,并简单地注释掉了 GrumPHP 脚本。

© www.soinside.com 2019 - 2024. All rights reserved.